上篇寫到移動直連短信中使用了GBK編碼,在本項目中運行時遭遇了亂碼的襲擊。
經過測試和分析后,將整個運行環境的編碼統一成GBK編碼即可解決這個問題。
本項目是運行在tomcat容器中的,以此對它進行配置即可,這里有兩點需要進行配置:
1、修改server.xml,增加編碼設置為GBK 1 <?xml version='1.0' encoding='utf-8'?>
2 <Server port="8085" shutdown="SHUTDOWN">
3
4 <Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
5 <Listener className="org.apache.catalina.core.JasperListener" />
6 <Listener className="org.apache.catalina.core.JreMemoryLeakPreventionListener" />
7 <Listener className="org.apache.catalina.mbeans.ServerLifecycleListener" />
8 <Listener className="org.apache.catalina.mbeans.GlobalResourcesLifecycleListener" />
9
10 <GlobalNamingResources>
11 <Resource name="UserDatabase" auth="Container"
12 type="org.apache.catalina.UserDatabase"
13 description="User database that can be updated and saved"
14 factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
15 pathname="conf/tomcat-users.xml" />
16 </GlobalNamingResources>
17
18 <Service name="Catalina">
19 <Connector port="8088" protocol="HTTP/1.1"
20 connectionTimeout="20000"
21 redirectPort="8443" URIEncoding='GBK'/>
22
23 <!-- Define an AJP 1.3 Connector on port 8009 -->
24 <Connector port="8809" protocol="AJP/1.3" redirectPort="8443" URIEncoding='GBK'/>
25
26 <Engine name="Catalina" defaultHost="localhost">
27 <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
28 resourceName="UserDatabase"/>
29
30 <Host name="localhost" appBase="webapps"
31 unpackWARs="true" autoDeploy="true"
32 xmlValidation="false" xmlNamespaceAware="false">
33
34
35 </Host>
36 </Engine>
37 </Service>
38 </Server>
2、修改setenv.sh啟動參數,設置啟動編碼為GBK1 #JAVA_OPTS="-Xms128m -Xmx512m -XX:MaxPermSize=256m -Dfile.encoding=UTF-8 $JAVA_OPTS"
2 JAVA_OPTS="-Xms64m -Xmx256m -XX:MaxPermSize=128m -Dfile.encoding=GBK $JAVA_OPTS"
3
4 export JAVA_OPTS
技術文章收藏站點