大家好,小弟在学习Struts2框架的时候发现一个问题。
就是我写一个Action类,如果里面有System.out.println("中文").
单独以Java Application的形式测试的话,在控制台能正确输出中文。
可是如果发布到tomcat,从浏览器调用的话,就会有控制台打印乱码。
我把myeclipse以及struts2里可以设置encoding的地方全部设置成的utf-8.
在网上找了很多涉及encoding的地方,不管是从页面到后台还是从后台到页面,还是文件本身,还是数据库(此处不涉及)全部设成了utf-8.可是还是打印乱码。哪位大大能指点下Struts2把System.out怎么了?还是说Web调用的时候跟单独调用这个类时System.out的输出机制不一样?
就是我写一个Action类,如果里面有System.out.println("中文").
单独以Java Application的形式测试的话,在控制台能正确输出中文。
可是如果发布到tomcat,从浏览器调用的话,就会有控制台打印乱码。
我把myeclipse以及struts2里可以设置encoding的地方全部设置成的utf-8.
在网上找了很多涉及encoding的地方,不管是从页面到后台还是从后台到页面,还是文件本身,还是数据库(此处不涉及)全部设成了utf-8.可是还是打印乱码。哪位大大能指点下Struts2把System.out怎么了?还是说Web调用的时候跟单独调用这个类时System.out的输出机制不一样?
不应该呀,你这样试试,将System.out.println("中文").改成System.out.println("\u4e2d\u6587").看看是否ok
编码:encodeURI(encodeURI(str));
解码:java.net.URLDecoder.decode(str,"UTF-8");
System.out.println(name + " \u4e2d\u6587拦截器的动作----"
输出:null 中文拦截器的动作----开始执行登录的时间为: Wed May 09 20:35:33 CST 2012
如果是在Web上访问的话:
??????????? ??????----??????????: Wed May 09 20:34:50 CST 2012这到底是肿么了咧?
你这个是控制台打出的,还是log打出来的?
2、在Eclipse中,依次打开Run --->> Run Configration --->> Apache Tomcat--->> Common--->> Console encoding中,选择UTF-8。
这样试试。
对了,你确定你struts2配置文件中的编码设置为utf-8了吗?因为所有action的request等都会被这里的编码所设置,你的过滤器都不起作用的。
打开<tomcat_home>\conf目录下server.xml文件,找到对8080端口进行服务的Connector组件的设置部分,给这个组件添加一个属性:URIEncoding="utf-8"。修改后的Connector设置为:<Connector port="8080" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="false" redirectPort="8443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" <SPAN style="COLOR: #ff0000">URIEncoding="utf-8"</SPAN> />
楼主可以试试,一般Get方式都可以在这改成UTF-8编码,曾经我也遇到过乱码问题 ,一般从源头一步步分析就可以解决 的!