Tomcat默认全部都是用ISO-8859-1编码,不管你页面用什么显示,Tomcat最终还是会替你将所有字符转做ISO-8859-1.那么,当在另目标页面再用GBK翻译时就会将本来错的编码翻译成GBK的编码,这时的文字会乱码.
所以需要先将得到”字符”(不管是什么)都先用字节数组表示,且使用ISO-8859-1进行翻译,得到一个在ISO-8859-1编码环境下的字节数组.例如:AB表示成[64,65].然后再用GBK编码这个数组,并翻译成一个字符串.
那么我们可以得到一个编码转换的过程
假设:GBK码(“你”)->URLencode后变成->(%3F%2F)->Tomcat自动替你转一次ISO- 8859-1->得到( 23 43 68 23 42 68 每一个符号表示为ISO-8859-1中的一个编码)->接收页面—>再转一次为ISO-8859-1的Byte数组 [23,43,68,23,42,68]—>用GBK再转为可读的文字—>(%3F%2F”—->转为(“你”)
分享到:
相关推荐
本文将深入探讨标题提及的“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` ...
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")进行编码转换。 包里面已经含有源代码
String str3 = new String(buf3,"ISO8859-1");//错误解码 //编码解码4:错误编码正确解码 String str4 = "你好"; byte[] buf4 = str4.getBytes("ISO8859-1");//错误编码 String str4 = new String(buf4,"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`页面,包含所有常用的...
这段代码中,首先通过`getBytes("ISO-8859-1")`方法将字符串转换为ISO-8859-1编码的字节数组,然后使用`new String(...)`构造函数,将字节数组按照GBK编码重新解析为字符串。这里的关键在于两次编码的转换,如果原始...
String str = new String(rs.getBytes(1), "GBK"); ``` 如果页面使用的编码与数据库不一致,则可能需要进行编码转换处理。 ##### 使用GBK作为数据库字符编码 如果数据库使用GBK编码,则可以按照以下方式配置...
String unicodeStr = new String(gbkBytes, "GBK"); ``` 2. **Unicode转GBK(字符串)**: - 反之,如果已有Unicode字符串,需要编码成GBK,可以使用`CharsetEncoder`: ```java String unicodeStr = ...; // ...
- `str = new String(rs.getBytes(1), "GBK")` 值得注意的是,即使页面使用UTF-8,数据库中存储的也是UTF-8,依然可以使用GBK编码进行解码来正确显示中文。 #### 2. 使用GBK进行数据库连接 同样地,可以通过设置`...
String st = new String(ra.readLine().getBytes("ISO-8859-1"), "GBK"); ``` 读取文件时,首先通过 `readLine()` 方法读取一行内容,然后将其以 `ISO-8859-1` 编码的形式转换为字节数组,再使用 `GBK` 编码解码...
return new String(str.getBytes("ISO-8859-1"),"GBK"); } 3. 在数据库中存储和读取中文数据 对于大多数数据库的 JDBC 驱动程序,在 Java 程序和数据库之间传递数据都是以 ISO-8859-1 为默认编码格式,所以,我们...
public String toISO_8859_1(String str) throws UnsupportedEncodingException { return changeCharset(str, "ISO-8859-1"); } ``` #### 3. UTF-8 (8位统一码转换格式) - **定义**:UTF-8是一种可变长度的...
在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8.GetString()`将这个字节数组还原为UTF-8编码的字符串。 对于文件的编码转换...
OutputStreamWriter writer = new OutputStreamWriter(fos, "ISO-8859-1"); // 以ISO-8859-1写入文件 ``` 4. URL编码和解码 在网络编程中,URL中可能包含非ASCII字符,这时需要使用`URLEncoder.encode()`和`...
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....
str = new String(str.getBytes("ISO-8859-1")); ``` 注意,对于不同的数据库系统(如MySQL、Oracle等),其默认编码可能不同,需要根据实际情况调整。 4. **JSP页面中的中文解决** 对于JSP页面,除了调整操作...