Java 解决中文乱码问题
Java 中文乱码问题是中国程序员无法避免的话题。乱码的出现是由于中文和英文的编码格式不同,解码也是不一样的。如果中国的程序员不会遇到乱码,那么只有使用汉语编程。Han语编程是怎么回事,我也不大清楚,应该是前年吧!我一朋友给我介绍汉语编程,怎么不错不错?当时因为学习忙没去关注这个,等我闲了,那个朋友不弄这个,问他,他也不说不大清楚,最后自己对这个学习也不了了之了。
Java 中文乱码问题的解决方法
1. 使用 UTF-8 编码
在 Java 中,默认的编码方式是 UNICODE,所以用中文也易出问题。常见的解决方法是使用 UTF-8 编码。例如,在 JSP 中,可以加入以下代码:
`<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("UTF-8");%>`
charset=UTF-8 的作用是指定 JSP 向客户端输出的编码方式为“UTF-8”;pageEncoding="UTF-8",为了让 JSP 引擎能正确地解码含有中文字符的 JSP 页面,这在 LINUX 中很有效;request.setCharacterEncoding("UTF-8");是对请求进行了中文编码。
2. 使用 ISO-8859-1 编码
有些情况下,使用 ISO-8859-1 编码可以解决中文乱码问题。例如:
`String s2 = new String(s1.getBytes("ISO-8859-1"), "GBK");`
3. 使用 Tomcat 的 CharacterEncodingFilter
Tomcat 5.5 中文乱码的问题可以使用 CharacterEncodingFilter 来解决。需要将 %TOMCAT 安装目录%/webapps/servlets-examples/WEB-INF/classes/filters/SetCharacterEncodingFilter.class 文件拷到你的 webapp 目录/filters 下,如果没有 filters 目录,就创建一个。
然后,在 web.xml 里加入以下几行:
`<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>filters.SetCharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>GBK</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>Set Character Encoding</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>`
4. 使用 URIEncoding
在 Tomcat 的 server.xml 文件中,找到区块,加入如下一行:
`URIEncoding=”GBK”`
完整的应如下:
`<connector port="80" maxThreads="150" minSpareThreads="25" maxSpareThreads="75" enableLookups="false" redirectPort="8443" acceptCount="100" debug="0" connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK" />`
5. 使用 xmlHttpRequest
在使用 xmlHttpRequest 时,需要设置编码方式为 UTF-8。
解决 Java 中文乱码问题的关键是选择合适的编码方式和正确地配置 Tomcat 和 JSP。