import java.io.UnsupportedEncodingException;
public class main {
public static void main(String[] args) throws UnsupportedEncodingException{
byte [] b= new byte[]{(byte) 0xcc,(byte) 0xe1,(byte) 0xbd,(byte) 0xbb};
String s = new String(b,"ISO8859-1");
System.out.println(s);
print(s.getBytes("ISO8859-1"));
print(s.getBytes("GBK"));
print(s.getBytes("UTF-16"));
System.out.println(new String(s.getBytes("ISO8859-1"),"gbk"));
String ss = "中文";
print(ss.getBytes("UTF-16"));
print(ss.getBytes("ISO8859-1"));
}
static void print(byte [] b){
for(byte _b : b){
String s = Integer.toHexString(_b&0xff);
if(s.length()==1){
s = "0"+s;
}
System.out.print(s + " ");
}
System.out.println();
}
}
浏览器发送GBK字节到中间件,中间把这些字节都当作ISO8859-1字符处理,直接new String()打印出来的肯定是乱码,因为(byte) 0xcc,(byte) 0xe1,(byte) 0xbd,(byte) 0xbb对应的ISO8859-1字符是找不到的!
我们需要从字符串中重新把GBK字节拿出来,构造出原来的中文字符串。原来如代码所示。
分享到:
相关推荐
本文将深入探讨标题提及的“DELPHI 10.3编码转换:iso-8859-1转GBK,GBK转iso-8859-1”,以及在二维码生成中的应用,以解决乱码问题。 首先,我们需要理解两种编码系统的基础知识。`ISO-8859-1`是一种单字节编码...
byte[] isoBytes = new String(bytes, "ISO-8859-1").getBytes("ISO-8859-1"); ``` - **从`byte[]`到`String`**: - `public String(byte[] bytes, String charsetName) throws UnsupportedEncodingException` ...
String str3 = new String(buf3,"ISO8859-1");//错误解码 //编码解码4:错误编码正确解码 String str4 = "你好"; byte[] buf4 = str4.getBytes("ISO8859-1");//错误编码 String str4 = new String(buf4,"GBK")...
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; } ``` 接下来,我们谈谈抽象类...
解决Struts2上传时候使用UTF-8的冲突问题... * 对于请求流,使用的ISO-8859-1编码方式进行,如果发现请求内容中出现名称乱码,请使用new String(str.getBytes("ISO-8859-1"),"GBK")进行编码转换。 包里面已经含有源代码
`str.getBytes("ISO-8859-1")`首先将字符串按照ISO-8859-1编码转换成字节数组,然后再通过`new String(byte[], "GBK")`构造函数将其转换为GBK编码的字符串。这种方法适用于对已知编码的字符串进行转换。 #### 方法...
例如,`new String(str.getBytes("gbk"), "iso-8859-1")` 和 `new String(str.getBytes("iso-8859-1"), "gbk")` 分别用于转换。 2. 引用Java类: - 为了减少重复工作,可以创建一个`lib.jsp`页面,包含所有常用的...
String unicodeStr = new String(gbkBytes, "GBK"); ``` 2. **Unicode转GBK(字符串)**: - 反之,如果已有Unicode字符串,需要编码成GBK,可以使用`CharsetEncoder`: ```java String unicodeStr = ...; // ...
String str = new String(rs.getBytes(1), "GBK"); ``` 如果页面使用的编码与数据库不一致,则可能需要进行编码转换处理。 ##### 使用GBK作为数据库字符编码 如果数据库使用GBK编码,则可以按照以下方式配置...
tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; } ``` 这段代码中,首先通过`...
String st = new String(ra.readLine().getBytes("ISO-8859-1"), "GBK"); ``` 读取文件时,首先通过 `readLine()` 方法读取一行内容,然后将其以 `ISO-8859-1` 编码的形式转换为字节数组,再使用 `GBK` 编码解码...
- `str = new String(rs.getBytes(1), "GBK")` 值得注意的是,即使页面使用UTF-8,数据库中存储的也是UTF-8,依然可以使用GBK编码进行解码来正确显示中文。 #### 2. 使用GBK进行数据库连接 同样地,可以通过设置`...
System.out.println(new String(str.getBytes("ISO-8859-1"), "ISO-8859-1")); // 输出乱码 System.out.println(new String(str.getBytes("UTF-8"), "UTF-8")); // 输出中国 System.out.println(new String(str....
return new String(str.getBytes("ISO-8859-1"),"GBK"); } 3. 在数据库中存储和读取中文数据 对于大多数数据库的 JDBC 驱动程序,在 Java 程序和数据库之间传递数据都是以 ISO-8859-1 为默认编码格式,所以,我们...
OutputStreamWriter writer = new OutputStreamWriter(fos, "ISO-8859-1"); // 以ISO-8859-1写入文件 ``` 4. URL编码和解码 在网络编程中,URL中可能包含非ASCII字符,这时需要使用`URLEncoder.encode()`和`...
- 字符串解码与编码转换:如果接收到的数据是其他编码,如ISO8859-1,需要先解码再编码,例如`new String(str.getBytes("iso8859-1"), "gb2312")`。 5. **JSP页面处理**: - 可以在JSP页面中直接对参数进行编码...
public String toISO_8859_1(String str) throws UnsupportedEncodingException { return changeCharset(str, "ISO-8859-1"); } ``` #### 3. UTF-8 (8位统一码转换格式) - **定义**:UTF-8是一种可变长度的...
str = new String(str.getBytes("ISO-8859-1"), "GB2312"); ``` 这里 `getString` 方法默认返回的是按照ISO-8859-1编码的字符串。通过 `getBytes("ISO-8859-1")` 和 `new String(..., "GB2312")` 的组合,可以将该...