• tomcat jsp页面乱码解决


    浏览器接收服务器响应的中文参数:

    JSP页面中告诉浏览器使用什么编码: 

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

    HTML中设置:

    <meta http-equiv="content-type" content="text/html;charset=utf-8">

    Servlet中设置:

    response.setContentType("text/html;charset=utf-8");

    response.getWriter().print(str);

    服务器接收浏览器传递的中文参数:

    如果是POST请求:

    request.setCharacterEncoding("utf-8");

    String userName = request.getParameter();

    注:getParameter()获取POST请求参数默认使用ISO-8859-1编码,setCharacterEncoding()方法仅对POST请求有效

    如果是GET请求:

    String name = request.getParameter("username");

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

    在Tomcat容器的server.xml中配置URIEncoding(不推荐):

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

    浏览器地址栏编码

    http://localhost:8080/servlet/regist?name="张三"

    如果在浏览器地址栏中直接给出带参数的URL,不是通过超链接方法访问服务器,那么这个参数是GBK编码的。

    没有办法处理这问题,因为在页面使用UTF-8编码,Servlet需要用UTF-8来解码,而此时URL中编码是GBK。

    但直接在地址栏中根本就不应该直接输入带有参数的URL,只有超链接中的URL是受页面的编码控制的。

    IE6对UTF-8不友好(使用JS处理)

    IE6对UTF-8不是很友好!它会把两个字节当成一个中文来处理,当字节数为奇数时,那么就最后一个字节就会丢失。例如我们的GET参数是“大家好”,对于UTF-8编码而言,它就是9个字节,因为中文在UTF-8编码中3个字节,三个汉字对应9个字节。IE6认为2个字节是一个汉字,那么最后一个字节不会发送到服务器端,IE6很不安全。

    处理这个问题的办法是把GET请求中的参数使用JavaScript做URL编码,URL编码后的内容就不再是中文了,这样IE6也就不会丢失字节了。

    <a href='javascript:_go()'>Encoding</a>

    <script type="text/javascript">

    function _go() {

    location.href = encodeURI("EncodingServlet?name=大家好");

    }

    </script>

    http://localhost/encoding/EncodingServlet?name=%E5%A4%A7%E5%AE%B6%E5%A5%BD

    在使用URL编码后,大家好已经变成了%E5%A4%A7%E5%AE%B6%E5%A5%BD。这样就不会再丢失字节了。

  • 相关阅读:
    0Day – 2011.1.20[From B4A]
    0Day – 2011.1.16[From B4A]
    ubuntu 桌面下方的面板(任务栏)恢复方法
    Delphi WebBrowser用法几则浅谈
    0Day – 2011.1.3[From B4A]
    0Day – 2011.1.8[From B4A]
    0Day – 2011.1.6[From B4A]
    0Day – 2011.1.10[From B4A]
    0Day – 2011.01.21[From B4A]
    0Day – 2011.1.7[From B4A]
  • 原文地址:https://www.cnblogs.com/xyhero/p/714327bdb5fea49e4a7c858d92512f7d.html
Copyright © 2020-2023  润新知