中文化和国际化问题权威解析之三:Java中文问题分析 ,工作遇到的问题总结
转自http://blog.csdn.net/alex197963/article/details/4436035
?
本章从实际的中文问题中,分析问题的根本原因,以及解决之道。
?
虽然输出编码是对的,但在此之前,由于错误的输入编码,每个中文字变成了两个不相干的欧洲字符。而这些欧洲字符的编码和GBK编码是相冲突的(但也不一定完全冲突,例如上例中的第三个字节?
这很可能是因为没有设置?
明眼人一看就发现,实际上在这种情况下,最后输出到浏览器上的字节流是正确的!只是因为content type被设成了错误的ISO-8859-1编码,所以才导致浏览器显示不正确的。事实上,用户可以手工改变浏览器的设置,使浏览器使用GBK对字节流重新解码。
看起来象是数学中的“负负得正”。为什么会这样呢?这是因为ISO-8859-1编码的特殊性导致的。ISO-8859-1字符集的编码范围是之类的标记,如果有,则以GBK显示页面。此时页面显示是完全正常的(没有乱码)。
Content Type
浏览器环境
服务器环境
从模板取得的中文字
从XML取得的中文字
从用户表单取得的中文字
深入分析
以上只是分析了最常见的“乱码”现象。实际上,还可能会发生更复杂一点的情形。但是无论什么情形,都可以通过仔细分析中文字符经过的每一个输入、转换、输出环节,来了解它的原因。