`
zhlld
  • 浏览: 3223 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

new String(str.getBytes(“ISO-8859-1″),”GBK”)为什么

阅读更多
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

    本文将深入探讨标题提及的“DELPHI 10.3编码转换:iso-8859-1转GBK,GBK转iso-8859-1”,以及在二维码生成中的应用,以解决乱码问题。 首先,我们需要理解两种编码系统的基础知识。`ISO-8859-1`是一种单字节编码...

    关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换

    byte[] isoBytes = new String(bytes, "ISO-8859-1").getBytes("ISO-8859-1"); ``` - **从`byte[]`到`String`**: - `public String(byte[] bytes, String charsetName) throws UnsupportedEncodingException` ...

    ISO-8859.docx

    tempStr = new String(str.getBytes("ISO-8859-1"), "GBK"); tempStr = tempStr.trim(); } catch (Exception e) { System.err.println(e.getMessage()); } return tempStr; } ``` 接下来,我们谈谈抽象类...

    struts2上传插件(中文编码冲突解决)

    解决Struts2上传时候使用UTF-8的冲突问题... * 对于请求流,使用的ISO-8859-1编码方式进行,如果发现请求内容中出现名称乱码,请使用new String(str.getBytes("ISO-8859-1"),"GBK")进行编码转换。 包里面已经含有源代码

    史上最全的java基础总结大全

    String str3 = new String(buf3,"ISO8859-1");//错误解码 //编码解码4:错误编码正确解码 String str4 = "你好"; byte[] buf4 = str4.getBytes("ISO8859-1");//错误编码 String str4 = new String(buf4,"GBK")...

    我总结的中文处理问题.txt

    `str.getBytes("ISO-8859-1")`首先将字符串按照ISO-8859-1编码转换成字节数组,然后再通过`new String(byte[], "GBK")`构造函数将其转换为GBK编码的字符串。这种方法适用于对已知编码的字符串进行转换。 #### 方法...

    Java Web程序设计-1期 《Java Web程序设计》_经验技巧.doc

    例如,`new String(str.getBytes("gbk"), "iso-8859-1")` 和 `new String(str.getBytes("iso-8859-1"), "gbk")` 分别用于转换。 2. 引用Java类: - 为了减少重复工作,可以创建一个`lib.jsp`页面,包含所有常用的...

    java乱码问题

    这段代码中,首先通过`getBytes("ISO-8859-1")`方法将字符串转换为ISO-8859-1编码的字节数组,然后使用`new String(...)`构造函数,将字节数组按照GBK编码重新解析为字符串。这里的关键在于两次编码的转换,如果原始...

    java如何正确使用字体编码

    String str = new String(rs.getBytes(1), "GBK"); ``` 如果页面使用的编码与数据库不一致,则可能需要进行编码转换处理。 ##### 使用GBK作为数据库字符编码 如果数据库使用GBK编码,则可以按照以下方式配置...

    android GBK转换为String

    String unicodeStr = new String(gbkBytes, "GBK"); ``` 2. **Unicode转GBK(字符串)**: - 反之,如果已有Unicode字符串,需要编码成GBK,可以使用`CharsetEncoder`: ```java String unicodeStr = ...; // ...

    java中编码的转换

    - `str = new String(rs.getBytes(1), "GBK")` 值得注意的是,即使页面使用UTF-8,数据库中存储的也是UTF-8,依然可以使用GBK编码进行解码来正确显示中文。 #### 2. 使用GBK进行数据库连接 同样地,可以通过设置`...

    RandomAccessFile 解决乱码

    String st = new String(ra.readLine().getBytes("ISO-8859-1"), "GBK"); ``` 读取文件时,首先通过 `readLine()` 方法读取一行内容,然后将其以 `ISO-8859-1` 编码的形式转换为字节数组,再使用 `GBK` 编码解码...

    java中文乱码解决问题

    return new String(str.getBytes("ISO-8859-1"),"GBK"); } 3. 在数据库中存储和读取中文数据 对于大多数数据库的 JDBC 驱动程序,在 Java 程序和数据库之间传递数据都是以 ISO-8859-1 为默认编码格式,所以,我们...

    java字符串的各种编码转换

    public String toISO_8859_1(String str) throws UnsupportedEncodingException { return changeCharset(str, "ISO-8859-1"); } ``` #### 3. UTF-8 (8位统一码转换格式) - **定义**:UTF-8是一种可变长度的...

    C#写的 GBK GB2312 UTF-8转换

    在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8.GetString()`将这个字节数组还原为UTF-8编码的字符串。 对于文件的编码转换...

    Java设置String字符串编码方法详解

    OutputStreamWriter writer = new OutputStreamWriter(fos, "ISO-8859-1"); // 以ISO-8859-1写入文件 ``` 4. URL编码和解码 在网络编程中,URL中可能包含非ASCII字符,这时需要使用`URLEncoder.encode()`和`...

    企业面试笔试题总汇v1.6重新编辑版

    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....

    Java解决通信过程的中文乱码的问题

    str = new String(str.getBytes("ISO-8859-1")); ``` 注意,对于不同的数据库系统(如MySQL、Oracle等),其默认编码可能不同,需要根据实际情况调整。 4. **JSP页面中的中文解决** 对于JSP页面,除了调整操作...

Global site tag (gtag.js) - Google Analytics