中文乱码问题解决

最近在开发过程中遇到不少中文乱码问题,google无数次,总算解决一部分,哦也!

 

在开发的时候,所有的jsp页面都使用UTF-8编码(UTF-8真是个好东西!)

 

1.struts中资源文件中如果value为中文,显示乱码 


    解决办法:使用eclipse插件Properties Editor 更新站点http://propedit.sourceforge.jp/eclipse/updates/(建议自动更新)
 步骤:
 Eclipse下的“帮助”/“软件更新”/”查找并安装“/选择第二项/“新建远程站点”/name随意写,url输入
http://propedit.sourceforge.jp/eclipse/updates/ 


 

2.表单提交中文时显示乱码

 

解决办法:使用servlet过滤器filter 

在TOMCAT的目录下的\webapps\jsp-examples\WEB-INF\classes\filters\找到SetCharacterEncodingFilter.java 这个类,放到你的程序中并配置好映射路径。

  <filter>
        <filter-name>Set Character Encoding</filter-name>
        <filter-class>com.wygl.service.SetCharacterEncodingFilter</filter-class>
        <init-param>
            <param-name>encoding</param-name>
            <param-value>UTF-8</param-value>
        </init-param>
    </filter>
  <filter-mapping>
        <filter-name>Set Character Encoding</filter-name>
        <url-pattern>/*</url-pattern>
  </filter-mapping>

  

这样就ok了,还有个需要注意的地方,当时filter配置好后,提交还是乱码,检查了好久才发现,原来

  1. "test1.jsp" id="listForm" >  
少些了mothed="post"
  1. "test1.jsp" id="listForm" method="post" >  

 

 

3. struts的中文问题

 

解决方法:使用自己的ActionServlet

自己写一个MyActionServlet继承ActionServlet

  1. import javax.servlet.http.HttpServletRequest;   
  2. import javax.servlet.http.HttpServletResponse;   
  3. import org.apache.struts.action.ActionServlet;   
  4.   
  5. public class MyActionServlet extends ActionServlet{   
  6.     protected void process(HttpServletRequest request, HttpServletResponse response) throws java.io.IOException, javax.servlet.ServletException {    
  7.         /**@todo Override this org.apache.struts.action.ActionServlet method*/     
  8.         request.setCharacterEncoding("UTF-8");    
  9.         super.process(request, response);    
  10.     }   
  11. }   

然后在web.xml里面使用MyActionServlexml

  1. <servlet>  
  2.     <servlet-name>actionservlet-name>  
  3.     <servlet-class>com.wygl.service.MyActionServletservlet-class>  
  4.     <init-param>  
  5.       <param-name>configparam-name>  
  6.       <param-value>/WEB-INF/struts-config.xmlparam-value>  
  7.     init-param>  
  8.     <init-param>  
  9.       <param-name>debugparam-name>  
  10.       <param-value>3param-value>  
  11.     init-param>  
  12.     <init-param>  
  13.       <param-name>detailparam-name>  
  14.       <param-value>3param-value>  
  15.     init-param>  
  16.     <load-on-startup>0load-on-startup>  
  17.   servlet>  

 这样就ok了

 

 

4.  mysql的中文问题

 

解决方法:统一编码

在mysql创建数据库的时候注意选择编码UTF-8

如果使用Spring + Hibernate来开发,在applicationContext.xml中配置dataSource的url时这样写:

 

 

xml 代码
  1. <property name="url" value="jdbc:mysql://127.0.0.1:3306/pm?useUnicode=true&amp;characterEncoding=UTF-8"></property>  

 

5. js,ajax 的中文问题

 

js使用的是UTF-8编码,只要包含js的页面也使用UTF-8,js就不会出现乱码

关于ajax,通过ajax将数据提交到服务器端,如果数据中有中文,就会出现乱码

原因:tomcat传参使用ISO-8859-1来编码,而web页面和服务器端都使用的是UTF-8

解决方法:使用ajax的POST,不要使用GET,然后在服务器端这样写

String name = new String(request.getParameter("name").getBytes("ISO-8859-1"), "utf-8");

解决!

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值