实际上Apusic也有一些关于字符集的参数,而且不需要编写代码,更节省工作量,也更高效。
参数一:
在$APUSIC_HOME(4.0.3)或$DOMAIN_HOME(5.0及以上)目录下的config/web.xml中增加以下参数:
<context-param> <param-name>request.charsetencoding</param-name> <param-value>GBK</param-value> </context-param>
这个参数的适用场景如下:
当使用request来传递带有中文字符的参数时,可以使用这个参数来设置字符集的类型,其中的param-value可以根据应用的实际需要设置成:
gb2312、GBK、UTF-8等。
参数二:
在$APUSIC_HOME(4.0.3)或$DOMAIN_HOME(5.0及以上)目录下的的config/apusic.conf中的
WebService服务中增加参数:
<ATTRIBUTE NAME="URIEncoding" VALUE="GBK"/>
修改后的apusic.conf的WebService服务如下:
<SERVICE CLASS="com.apusic.web.WebService" > <ATTRIBUTE NAME="MaxWaitingClients" VALUE="500"/> <ATTRIBUTE NAME="WaitingClientTimeout" VALUE="5"/> <ATTRIBUTE NAME="KeepAlive" VALUE="true"/> <ATTRIBUTE NAME="KeepAliveTimeout" VALUE="15"/> <ATTRIBUTE NAME="MaxKeepAliveRequests" VALUE="100"/> <ATTRIBUTE NAME="MaxKeepAliveConnections" VALUE="300"/> <ATTRIBUTE NAME="NumberSelectors" VALUE="1"/> <ATTRIBUTE NAME="ServletReloadCheckInterval" VALUE="3"/> <ATTRIBUTE NAME="EnableLog" VALUE="False"/> <ATTRIBUTE NAME="LogFileName" VALUE="logs/access.log"/> <ATTRIBUTE NAME="LogFileLimit" VALUE="1000000"/> <ATTRIBUTE NAME="LogFileCount" VALUE="10"/> <ATTRIBUTE NAME="URIEncoding" VALUE="GBK"/> </SERVICE>
这个参数的适用场景如下:
1、 在jsp中使用redirect方式进行页面跳转时带有中文参数;
2、 在jsp中使用windows.open()方式打开新窗口时带有中文参数;
3、 在常见的点击左侧树状菜单项右侧内容区域展示不同页面时需要传递中文参数。
类似上述情况的在URI中传递中文时出现了乱码,这个参数基本上都可以解决问题。
上面的两个参数可以解决大多数情况下的中文乱码问题,当然偶尔也会遇到解决不了的问题,那就需要对问题进行具体的分析了,如果有源码可以进行断点跟踪,没有的话也可以使用一些辅助工具。
注:本文内容来自我的同事宋凯的总结