注:开发IDE是eclilpse,本地开发环境是windows,测试环境是linux
项目之前是一位兄弟开发的,项目编码为GBK编码,半路做其它项目,我接接手,一次也没布署过测试环境。
我在本地一切开发好之后,测试没有问题,布到linux上就有乱码问题。
找了半天终于找到原因,测试服务器linux上是UTF-8编码,使用locale命令查看:
无奈,只得把项目中所有带GBK的地方全部改成UTF-8,这包括:
web.xml:
所有的jsp页面:
这些还罢了,最麻烦的是所有的类文件都要编译为UTF-8编码的,具体操作为:
[color=red]在eclipse中选中一个JAVA文件,右击 -> properties -> Text file encoding 修改为UTF-8[/color],
可这样一修改,JAVA文件中所有的中文字符全部变成了乱码,解决的办法为:
先把JAVA文件修改为GBK编码,Ctrl+A全部选择,再把JAVA文件修改为UTF-8编码,在类文件中Ctrl+A全选,删掉,再Ctrl+V粘贴刚才复制的内容。
好,大功告成!
[color=red]可这只是修改了一个JAVA文件!什么??!!!![/color] 对,你工程里有多少个JAVA文件都要这样修改,否则就会有以下后果
1、所有JAVA类中的中文注释都不可用(这个在某种情况下可以舍弃)2
2、所有JAVA类中中文消息(存储在request中供在JSP中显示的)全部为乱码,这样JSP中不管如何设置,始终是乱码!!
[color=red]于是,一项浩大的编码改造工程开始了。。。。。[/color]
项目之前是一位兄弟开发的,项目编码为GBK编码,半路做其它项目,我接接手,一次也没布署过测试环境。
我在本地一切开发好之后,测试没有问题,布到linux上就有乱码问题。
找了半天终于找到原因,测试服务器linux上是UTF-8编码,使用locale命令查看:
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
无奈,只得把项目中所有带GBK的地方全部改成UTF-8,这包括:
web.xml:
<filter>
<filter-name>Set Character Encoding</filter-name>
<filter-class>
org.springframework.web.filter.CharacterEncodingFilter
</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>UTF-8</param-value>
</init-param>
<init-param>
<param-name>allowScriptTagRemoting</param-name >
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>forceEncoding</param-name>
<param-value>true</param-value>
</init-param>
</filter>
所有的jsp页面:
<%@ page contentType="text/html;charset=UTF-8" language="java"%>
这些还罢了,最麻烦的是所有的类文件都要编译为UTF-8编码的,具体操作为:
[color=red]在eclipse中选中一个JAVA文件,右击 -> properties -> Text file encoding 修改为UTF-8[/color],
可这样一修改,JAVA文件中所有的中文字符全部变成了乱码,解决的办法为:
先把JAVA文件修改为GBK编码,Ctrl+A全部选择,再把JAVA文件修改为UTF-8编码,在类文件中Ctrl+A全选,删掉,再Ctrl+V粘贴刚才复制的内容。
好,大功告成!
[color=red]可这只是修改了一个JAVA文件!什么??!!!![/color] 对,你工程里有多少个JAVA文件都要这样修改,否则就会有以下后果
1、所有JAVA类中的中文注释都不可用(这个在某种情况下可以舍弃)2
2、所有JAVA类中中文消息(存储在request中供在JSP中显示的)全部为乱码,这样JSP中不管如何设置,始终是乱码!!
[color=red]于是,一项浩大的编码改造工程开始了。。。。。[/color]