zoukankan      html  css  js  c++  java
  • 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。这样就不会再丢失字节了。

  • 相关阅读:
    ScrollView嵌套EditText联带滑动的解决的方法
    POJ 2003 Hire and Fire (多重链表 树结构 好题)
    leetcode笔记:Bulls and Cows
    PHP中使用ActiveMQ实现消息队列
    WPF模拟键盘输入和删除
    DLLImport的用法C#
    Net Core 的配置模式以及热重载配置
    简体与繁体转换
    Webdings字体、Wingdings字体对照表、用CSS3绘制的各种小图标
    查询大于2分钟的数据
  • 原文地址:https://www.cnblogs.com/xyhero/p/714327bdb5fea49e4a7c858d92512f7d.html
Copyright © 2011-2022 走看看