首页 > 代码库 > 中文乱码的总结

中文乱码的总结

一、servlet
    1)将接收的内容(参数)进行编码
    request.setCharacterEncodeing(String charset);

    2)将要输出的转发的内容进行编码
    response.setContextType("text/html;charset=utf-8");

二、jsp
    <%@page language=“java” import="java.util.*"  pageEncoding="utf-8"%>

三、Js
    1.传参页面
    Javascript代码:
    <script type=”text/javascript”>// <![CDATA[
    function send(){
    var url = "test01.html";
    var userName = $("#userName").html();
    window.open(encodeURI(url + "?userName=" + userName)); }
    // ]]>
    </script>
    2. 接收参数页面:test02.html
    <script>
    var urlinfo = window.location.href;//獲取url
    var userName = urlinfo.split(“?”)[1].split(“=”)[1];//拆分url得到”=”後面的參數
    $(“#userName”).html(decodeURI(userName));
    </script>
    二:如何获取Url“?”后,“=”的参数值:
    A.首先用window.location.href获取到全部url值。
    B.用split截取“?”后的全部
    C.split(“?”)后面的[1]内数字,默认从0开始计算

    escape,unescape,encodeURI,encodeURIComponent区别:
    1.传递参数时候使用,encodeURIComponent否则url中很容易被”#”,”?”,”&”等        敏感符号隔断。
    2.url跳转时候使用,编码用encodeURI,解码用decodeURI。

    3.escape() 只是为0-255以外 ASCII字符 做转换工作,转换成的 %u**** 这样的        码,    如果要用更多的字符如 UTF-8字符库 就一定要用 encodeURIComponent()     或    encodeURI() 转换才可以成 %nn%nn 这的码才可以,其它情况下escape,    encodeURI,en    codeURIComponent编码结果相同,所以为了全球的统一化进程,在        用 encodeURICom    ponent() 或 encodeURI() 代替 escape() 使用吧!


四、struts

    设置常量:<contanst name=“struts.i18n.ecording”value=http://www.mamicode.com/"utf-8">


五、spring
    在您通过表单向服务器提交数据时,一个经典的问题就是中文乱码问题。虽然我们所有    的 JSP 文件和页面编码格式都采用 UTF-8,但这个问题还是会出现。解决的办法很        简单,我们只需要在 web.xml 中配置一个 Spring 的编码转换过滤器就可以了.
    使用在非struts2框架开发:
   org.springframework.web.filter.CharacterEncodingFilter
    <filter>
     <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>
       <init-param>
       <param-name>forceEncoding</param-name>
       <param-value>true</param-value>
       </init-param>
    </filter>

    <filter-mapping>
    <filter-name>characterEncodingFilter</filter-name>
    <url-pattern>/*</url-pattern>

    </filter-mapping>


六、html
    表单中的数据会按照当前页面来进行编码。
    <meta http-equiv="content-type" content="text/html;charset=utf-8;">
    模拟消息头content-type,让浏览器以utf-8编码打开页面。
    确保页面将表单用指定的字符编码进行编码。

七、cookie
    cookie的值只能是ASCII字符,如果是中文,需要将中文转换成ASCII字符形式。
    可以使用URLEncoder.encode()方法和URLDecoder.decode()方法来进行这种转换。

           

中文乱码的总结