zoukankan      html  css  js  c++  java
  • Java WEB 乱码解决大全

    来自 http://ligure.iteye.com/blog/

    中文乱码:在以后学习过程中全部采用UTF-8
    1、文件的乱码
    1.1、项目文本文件默认编码:
           【右击项目】->【Properties】->【Resource】->【Text file encoding】    
    1.2、 JSP 文件编码:由于 JSP 要翻译为 Servlet
    1.2.1、JSP文件编码:
         【右击文件】->【Properties】->【Resource】->【Text file encoding】
    1.2.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、最简单方式:

    Java代码  收藏代码
    1. String username = request.getParameter(“username”);  
    2. 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 ,具体配置如下页:

    Java代码  收藏代码
    1. <filter>  
    2.         <filter-name>Set Character Encoding</filter-name>  
    3.         <filter-class>filters.SetCharacterEncodingFilter</filter-class>  
    4.         <init-param><param-name>encoding</param-name>  
    5.         <param-value>utf-8</param-value></init-param>  
    6. </filter>  
    7. <filter-mapping>  
    8.         <filter-name>Set Character Encoding</filter-name>  
    9.         <url-pattern>/*</url-pattern>  
    10. </filter-mapping>  


    2.5、 GET提交方式中文乱码解决
    通过修改request.setCharacterEncoding(“UTF-8”);只能解决POST提交方式的请求编码,对GET无效。

         1 、最简单解决方案: 该解决方案不再需要任何额外配置(如filter)
               TOMCAT默认ISO-8859-1 因此可以设置默认编码为UTF-8解决,在confserver.xml文件中设置如下
               

    Java代码  收藏代码
    1. <Connector port="8080" protocol="HTTP/1.1"  
    2.                                connectionTimeout="20000"  
    3.                                redirectPort="8443" URIEncoding=”UTF-8”/>  


         2 、在 tomcat4 之后,可以通过如下配置来解决中文乱码,但必须配置 filter
             在confserver.xml文件中设置如下
                      

    Java代码  收藏代码
    1. <Connector port="8080" protocol="HTTP/1.1"  
    2.                                        connectionTimeout="20000"  
    3.                                        redirectPort="8443" useBodyEncodingForURI=“true”  />  


             然后request.setCharacterEncoding(“UTF-8”)也可解决GET乱码

  • 相关阅读:
    orcal下的中国大陆地热、重力网络数据库(用户网页模块设计)
    学生管理系统毕业论文
    图像效果算法设计—静态效果
    数字温度计(单片机课程设计)
    Orcal下的中国大陆地热、重力网络数据库(数据库模块设计)
    电脑公司财务管理系统(论文+论计)
    明天开始开年会!
    今天北京下雪了!
    三天年会开完了!
    页面元素添加提示(tooltip)
  • 原文地址:https://www.cnblogs.com/renpei/p/6668822.html
Copyright © 2011-2022 走看看