在开发Struts项目时,碰到了tomcat控制台输出参数乱码问题,前提是控制台本身的编码支持中文,网上也给出了很多方案,根据我的实践,这些方案并不能解决我的问题。下面给出网上的方案及我的方案:
重要的原因是Struts默认编码为ISO-8859-1,如果java文件中设置编码为ISO-8859-1即可解决问题,终于搞定了,java文件接收参数示例:
new String(dynaForm.getString("title").getBytes("ISO-8859-1"));
我的解决方案比较简单针对Struts项目来说最有效:
以上的编码都不用改,在网页中定义好显示编码之后,在xxForm.java文件里的reset函数中按如下代码设置,原因是无论网页上是什么编码,在reset中都被替换为JVM的默认编码,所以无论怎么改都有可能出现代码不一致的现象,因此只需要将网页中的编码和此处的编码一致,即可很容易统一编码。我的配置是GBK,可以更改为你需要的任何编码都没有问题。当然可以用filter规划你的代码。
try {
request.setCharacterEncoding("GBK");
} catch (UnsupportedEncodingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
网上的方案:1) 更改 D:\Tomcat\conf\server.xml,指定浏览器的编码格式为“简体中文”:
方法是找到 server.xml 中的
<Connector port="8080" maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" URIEncoding='GBK' />
可以这样验证你的更改是否成功:在更改前,在你出现乱码的页面的IE浏览器,点击菜单“查看|编码”,会发现“西欧(ISO)”处于选中状态。而更改后,点击菜单“查看|编码”,会发现“简体中文(GB2312)”处于选中状态。
2)如果上述方法没有解决问题,可以试着改下myeclipse字符集
1.Windows->Preferences->general->Workspace->Text file encoding->Other框中的Text fileencoding改为UTF-8。
2.Windows->Preferences->General->Editors->TextEditors->Spelling Encoding 改为UTF-8
3.Servers窗口中,tomcat服务器右击->runconfiguration->common->encoding 设置为UTF-8
3)Perperties选项,在弹出的窗口右下边有一个"Text file encoding"选项,选择下边的Other选项,可以修改该文件的编码格式,如UTF-8\GB2312等,这样,在我们编写Java文件时,输入的中文就不会是乱码了。