中文乱码问题的一些总结

简介:

1.在程序开发中,我们常遇到中文乱码的问题:

eg.从页面传来的中文,到后台乱码了。怎么办19.gif

那么在接受页面传值的前面要加上这么一句代码:

request.setCharacterEncoding("UTF-8");


如果还是不行:那么我们就需要转码了,eg.=

request.setCharacterEncoding("UTF-8");

String name = request.getParameter("username");

name = new String(name.getBytes("ISO8859-1"),"UTF-8");


2. 当你向页面输出内容时,如何避免中文乱码。eg.向页面输出XML,HTML

应该加上

response.setCharacterEncoding("UTF-8");

response.setContentType("text/html;charset=UTF-8");

PrintWriter out = response.getWriter();

out.print("....");

out.flush();

out.close();


==========================================================================

2013-06-21-han

当我们通过URL进行传值时,为了防止中文乱码的问题,我们可以这样做,

1.传值的地方:java.net.URLEncoder.encode("中文中文");

2.接受的地方:java.net.URLDecoder.encode("接受的中文值");



可以参考的一篇文章



++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

2014-10-15-han------------httpClient等网络请求返回值乱码问题分析


1.java中,UTF-8  GBK,可能乱成下面的

wKiom1Q-WSyAro34AAAuDteH6zQ667.jpg


2.java中,GBK  UTF-8,可能乱码如下

wKiom1Q-WU_j1pXQAAAHZnXO7FA418.jpg


3.

对于httpClient等网络请求乱码的原因可能如下:

  请求方和接收方没有统一字符。

   没有对接收的字符做字符硬编码,而是使用jvm默认的file.encoding的默认编码。


4.案例展示:

logger.info("+++++++++ JDK的位数:" + System.getProperty("sun.arch.data.model"));

logger.info("file.encodin ============  encoding:"+ System.getProperty("file.encoding"));

logger.info("sun.jnu.encoding============  encoding:" +System.getProperty("sun.jnu.encoding"));


本地打印:64位,GBK,GBK                 中文不乱码

Linux上:64位,UTF-8UTF-8               中文乱码



5.分析原因:

java中,如果没有指定charset的时候,比如newString(byte[] bytes),都会调用Charset.defaultCharset()的方法。所以,java中编码中,我们应该学会指定字符编码!

 

BufferedReader in = newBufferedReader(new FileReader(path.toString()));

换成:

BufferedReader in = newBufferedReader((new InputStreamReader(newFileInputStream(path.toString()),"utf-8")))

 

new String(decrypt(hexStr2ByteArr(strIn)));

换成:

new String(decrypt(hexStr2ByteArr(strIn)),"GBK");

 

 

new String(Base64.decodeBase64(s.getBytes()));

换成:

new String(Base64.decodeBase64(s.getBytes()),"GBK");


参考文章:

http://blog.csdn.net/raintungli/article/details/6651076

http://blog.csdn.net/zzs0829/article/details/7407598            jvm默认字符编码问题】

http://www.kankanews.com/ICkengine/archives/35323.shtml

http://blog.csdn.net/zhuyijian135757/article/details/37706437

http://blog.csdn.net/zhengqiqiqinqin/article/details/17501219

http://www.cnblogs.com/silentjesse/archive/2011/11/04/2235674.html





     本文转自韩立伟 51CTO博客,原文链接:http://blog.51cto.com/hanchaohan/931061,如需转载请自行联系原作者






相关文章
|
6月前
|
Java Spring
中文乱码处理
中文乱码处理
80 0
|
存储
为什么会有中文乱码?
为什么会有中文乱码?
110 0
中文乱码
中文乱码
138 0
中文乱码
|
应用服务中间件 nginx Docker
中文乱码问题
中文乱码问题
159 0
Notepad++ 出现中文乱码 轻松解决
Notepad++ 出现中文乱码 轻松解决
2297 0
Notepad++ 出现中文乱码 轻松解决
|
应用服务中间件
中文乱码的原因及解决方法
中文乱码的原因及解决方法
1996 0
中文乱码的原因及解决方法
|
编解码 中间件 Java
javaWeb解决中文乱码的一点小总结
不同形式的请求及携带参数问题导致的乱码及解决
|
JavaScript 前端开发