tomcat,jboss,weblogic乱码问题以及Java中各种乱码问题大汇总 有更新!

  Bob

 服务器编码问题

1. tomcat服务器乱码处理

设置server.xml,找到这一段

    <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000" 
               redirectPort="8443"   />

 加上URIEncoding="utf-8" 就OK了!!!

   <Connector port="8080" protocol="HTTP/1.1" 
               connectionTimeout="20000"  URIEncoding="utf-8" 
               redirectPort="8443"   />

 

2. jboss7服务器乱码处理

JBOSS7编码设置(解决中文乱码问题)

修改standalone\configuration\standalone.xml文件

在<extensions> </extensions> 节点之后插入如下配置:
<system-properties>
        <property name="org.apache.catalina.connector.URI_ENCODING" value="UTF-8"/>
        <property name="org.apache.catalina.connector.USE_BODY_ENCODING_FOR_QUERY_STRING" value="true"/>
 </system-properties>

如果部署在linux系统,还需注意系统编码。在%JBOSS_HOME%/bin/standalone.conf 中配置export LANG="zh_CN.UTF-8"   或者 "en_US.UTF-8"等

 

 

 

3. weblogic服务器乱码处理

        weblogic安装的系统是window,weblogic版本是8.1.5版本,运行weblogic服务后,查看bea\user_projects\domains\mydomain\myserver目录下

myserver.log文件(我这边建的服务是默认的服务myserver,如果你没有用默认服务,那你就到你建的server下面找),以记事本的方式打开文件,查找file.encoding等于的值,

这个默认是系统的编码,如果系统编码不适合你当前的编码,可以通过下面方式修改我们weblogic的编码。


        一、首先修改启动文件startWebLogic.cmd,将编码改变
              startWebLogic.cmd文件在bea\user_projects\domains\mydomain目录下,以记事本方式打开,拉到最下面有一下内容:

%JAVA_HOME%\bin\java %JAVA_VM% %MEM_ARGS% %JAVA_OPTIONS% -Dweblogic.Name=%SERVER_NAME% -Dweblogic.ProductionModeEnabled=%PRODUCTION_MODE% -Djava.security.policy="%WL_HOME%\server\lib\weblogic.policy" weblogic.Server

              在“%JAVA_OPTIONS%”后面添加-Dfile.encoding="UTF-8",中间要用空格但是不要换行。
        二、重新启动weblogic服务
             重启weblogic服务后,可以到bea\user_projects\domains\mydomain\myserver目录下查看myserver.log文件里面的file.encoding值变成了UTF-8,则证明修改成功了。

 

另外注意点:

weblogic.xml,加入charset-params

在web.xml同级目录下有个weblogic.xml,没有的话可以创建

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE weblogic-web-app PUBLIC "-//BEA Systems, Inc.//DTD Web Application 9.1//EN" " http://www.bea.com/servers/wls810/dtd/weblogic810-web-jar.dtd">
<weblogic-web-app xmlns="http://xmlns.oracle.com/weblogic/weblogic-web-app">
	<container-descriptor>
		<prefer-web-inf-classes>false</prefer-web-inf-classes>
	   <!--提示即使weblogic即使有这个包也要优先使用下面路径的内容-->    
       <prefer-application-resources> <!-- www.sctarena.com -->  
           <resource-name>META-INF/services/javax.xml.ws.spi.Provider</resource-name>   
       </prefer-application-resources>    
       <prefer-application-packages>
            <package-name>org.apache.commons.lang.*</package-name>
            <package-name>antlr.*</package-name>
            <package-name>org.hibernate.*</package-name>
            <package-name>javax.persistence.*</package-name>    
            <package-name>org.python.core.*</package-name>    
            <package-name>com.bob.*</package-name>    
       </prefer-application-packages>
	 </container-descriptor>
	 <charset-params>
        <input-charset>
            <resource-path>/*</resource-path>
            <java-charset-name>UTF-8</java-charset-name>
        </input-charset>
    </charset-params>
	<context-root>/</context-root>
</weblogic-web-app>
 
 
 

Java中各种乱码问题

 

1. InputStreamReader读取utf-8文件中文乱码处理

读取utf-8文件文件乱码 

解决办法: 

因为InputStreamReader和BufferedReader 都继承自Reader,而BufferedReader 的构造器又是Reader. 


Writer也是一样的处理 
FileOutputStream writerStream = new FileOutputStream(filePath, true);  
BufferedWriter oWriter = new BufferedWriter(new OutputStreamWriter(writerStream, "UTF-8"));  
 
 
 
 
 

中文编码问题、编码原理

参考:
 

如有疑问或同行交流欢迎加群讨论:铂金信息技术交流群 151258054