技术开发 频道

解析Java WEB中文乱码问题根源


 
   2.3. 简单应用系统中的中文编码
    也许读者会问,这些跟我的中文问题有什么关系?我从来没有让我的程序使用过UTF-8或者那些古怪的字符串编码。
遗憾的是,每个程序员确实需要关心这些东西。不管你愿意不愿意,一个简单的java应用,已经在你并没有注意地情况下,使用了以上的很多编码。而这些编码过程在程序的处理过程中,就必须要经过很多次的转换,任何一个转换的错误,都可能是中文问题的根源!
     一个玩具性质的JSP应用,就已经使用了GB2312,Unicode,UTF-8,还有这些字符串所转换出来的各种形式。一个普通的J2EE应用,涉及的编码更是繁多。

    让我们来看一下在一个最简单的JSP页面中,“中文”两个字的各种表现形式。必须要说明一点的是,只有在应用程序完全按照tomcat的推荐方法设置的时候,以下的字符才会是这种形式,任何一个参数的不同,都将造成结果的不同。


    3. 字符转换过程
    我们已经看到,在一个过于简单的系统中,已经有3种以上的中文编码,繁多的字符串编码模式,组合出各种奇怪的数据。

    而所有这些在程序中运转的时候,都会涉及很多转换的过程。
    举简单的例子(以下的编码只是举例,并不是说在这个环节不能使用其他的编码):
    1. 用户的输入是GB2312,java需要读取成Unicode的字符串
    2. 如果在java代码中写了中文,java编译的类文件会用UTF-8来保存
    3. 配置文件使用了java的编码模式(\ u4e2d)
    4. 数据序列化XML的形式时,会把字符串转换成XML的字符编码(中)
     读取的时候当然是相反的过程。

0
相关文章