JavaEE 中文乱码

ssm中乱码问题解决:

在web.xml中加入:

<filter-name>CharacterEncodingFilter</filter-name>
<filter-class>org.springframework.web.filter.CharacterEncodingFilter</filter-class>
<init-param>
<param-name>encoding</param-name>
<param-value>utf-8</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>CharacterEncodingFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>

以上可以解决post请求乱码问题。

对于get请求中文参数出现乱码解决方法有两个:

修改tomcat配置文件添加编码与工程编码一致,如下:

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

另外一种方法对参数进行重新编码:

String userName new 
String(request.getParamter("userName").getBytes("ISO8859-1"),"utf-8")
ISO8859-1是tomcat默认编码,需要将tomcat编码后的内容按utf-8编码
总结:response对象输出中文,产生乱码。
    * 字节
        * 解决方案
            * 设置浏览器打开文件时采用的编码
                response.setHeader("Content-Type", "text/html;charset=UTF-8");
        * 获取字符串的byte数组采用的编码
                "哈罗我的".getBytes("UTF-8")
    * 字符
        * 解决方法
            * 设置浏览器打开文件时采用的编码
                response.setHeader("Content-Type", "text/html;charset=UTF-8");
               * 设置response缓冲区的编码
                response.setCharacterEncoding("UTF-8");
                                
        * 简写的方式(等于上面的两句)                        
                * response.setContentType("text/html;charset=UTF-8");
request 中文乱码
*get
    1. 最简写的方式:
    new String(username.getBytes(''ISO-8859-1"),"UTF-8")
    2. 逆向编解码
        浏览器会帮你先编码一次,逆向重新编码
*post (经常使用)
  setCharacterEncoding(“UTF-8”)   设置request缓冲区的编码

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 132,250评论 18 139
  • 编码问题一直困扰着开发人员,尤其在 Java 中更加明显,因为 Java 是跨平台语言,不同平台之间编码之间的切换...
    x360阅读 2,191评论 1 20
  • 最近一个项目,测试时采用的Windows下的Tomcat服务器,上传中文文件正常;部署时用到了Linux服务器,上...
    Jackeroo阅读 3,384评论 1 3
  • 1只有钱包的充实,才能拥有内心的平静。 2朋友圈的点赞数量是由你的社会地位决定的。 3不要怪为什么中国14亿人口都...
    颂問阅读 465评论 2 2
  • 众所周知,近几年安全被各行各业推到了非常重要的位置。可以说你的效益、业绩被看作零的话,安全则是前面的一,没有了安全...
    左金财阅读 412评论 0 3