• Java Web中文乱码解决方案


    中文乱码:在以后学习过程中全部采用UTF-8

    1、文件的乱码
    1.1、项目文本文件默认编码:
           【右击项目】->【Properties】->【Resource】->【Text file encoding】     
     
    1.2、文件默认编码:默认使用项目的默认编码
         【右击文件】->【Properties】->【Resource】->【Text file encoding】
    1.3、 JSP 文件编码:由于 JSP 要翻译为 Servlet
    1.3.1、JSP文件编码:
         【右击文件】->【Properties】->【Resource】->【Text file encoding】
    1.3.2、JSP翻译为Servlet时的编码:
       <%@ page language="java" pageEncoding="utf-8"%>
    中文乱码:在以后学习过程中全部采用UTF-8
    2、浏览器和服务器间传输数据的乱码
     
    2.1、 浏览器端 编码,一般由服务器端告诉浏览器如何解码数据:
    2.1.1、Servlet
              response.setContentType("text/html; charset=UTF-8");
            或者  response.setCharacterEncoding(“UTF-8”);
       2.1.2、JSP
             <%@ page language="java" contentType="text/html; charset=utf-8" %>
       2.1.3、通用
             <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
     
    注:浏览器编码可以由我们手工修改,但最后不要这样,一般让浏览器自动选择即可。
    中文乱码:在以后学习过程中全部采用UTF-8
    2、浏览器和服务器间传输数据的乱码
     
    2.2、 服务器端 编码,将客户端传过来的数据进行解码:
          浏览器默认使用ISO-8859-1进行编码数据,然后将数据传输到服务器,因此我们默认只需要将浏览器发送过来的数据转换为我们需要的编码即可。
    2.2.1、最简单方式:
        String username = request.getParameter(“username”);
           username = new String(username.getBytes("ISO-8859-1“), "UTF-8");
       2.2.2、比较好的解决方案
          // 必须 在获取参数之前,调用如下方法先解码
           request.setCharacterEncoding(“UTF-8”);
          String username = request.getParameter(“username”);
    2.4、比较通用方案:在一个Filter中更改所有请求的编码方式:
        1、在src中添加filter来设置编码格式是中文,filter类可以在tomcat的包里面:apache-tomcat-6.0.16.zipapache-tomcat-6.0.16webappsexamplesWEB-INFclassesfilters下面,SetCharacterEncodingFilter.java文件
     
         2 、在 web.xml 中配置 filter ,具体配置如下页:
    <filter>
            <filter-name>Set Character Encoding</filter-name>
            <filter-class>filters.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>
    2.5、 GET提交方式中文乱码解决
    通过修改request.setCharacterEncoding(“UTF-8”);只能解决POST提交方式的请求编码,对GET无效。
     
         1 、最简单解决方案: 解决方案不再需要任何额外配置(如filter)
               TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在confserver.xml文件中设置如下
                 <Connector port="8080" protocol="HTTP/1.1"
                                    connectionTimeout="20000"
                                    redirectPort="8443" URIEncoding=”UTF-8”/>
         2 、在 tomcat4 之后,可以通过如下配置来解决中文乱码,但必须配置 filter
             在confserver.xml文件中设置如下
                        <Connector port="8080" protocol="HTTP/1.1"
                                            connectionTimeout="20000"
                                            redirectPort="8443" useBodyEncodingForURI=“true”  />
             然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码
  • 相关阅读:
    IE6-IE11兼容性问题列表及解决办法
    EJB--事务管理 .
    JDBC批处理---(java 对数据库的回滚) .
    redisb并发访问慢出现的问题
    redis其他问题
    多线程实现服务器端接收连接
    序列化作用
    redis的key过期时间
    nginx负载均衡和反向代理有什么区别
    nginx的负载均衡和反响代理配置
  • 原文地址:https://www.cnblogs.com/yangml/p/3809999.html
Copyright © 2020-2023  润新知