web开发常见中文乱码的三种情况及解决方法

来源:互联网 发布:移动宽带网络维修电话 编辑:程序博客网 时间:2024/06/09 22:51

常见发生中文乱码的三种情况

  1. 表单 form 传输数据发生乱码

    • get

      解决方法:在接受数据方设置指定编码

      <%        // 设置浏览器 以指定编码  去解析数据        response.setContentType("text/html;utf-8");        //  修改服务端发送数据时查阅的码表        response.setCharacterEncoding("utf-8");        PrintWriter writer = response.getWriter();        String name =request.getParameter("name");        System.out.println(name);        writer.print(name);%>
    • post

      解决方法:在接受方设置指定编码

      <%request.setCharacterEncoding("encoding"); String str = request.getParameter("name");%>
  2. 超链接 传输数据发生乱码

    <a href="address?name1=value1&name2=value2&name3=value3...>超链接传输数据</a>"

    解决方法:超链接传输数据本质是和 get 提交数据是一样的。都是通过请求行传递数据。

    <%
           
    // 指定浏览器 解析数据的 字符编码response.setContentType("text/html;charset=utf-8");PrintWriter writer =  response.getWriter();String name = request.getParameter("name");writer.print(name);System.out.println(name);
           
    %>

  3. sendRedirect() 请求重定向 传输数据发生乱码

    response.sendRedirect(address?name1=value1&name2=value2&name3=value3...);

    解决方法:

    <%    // 目标地址页面 设置String name = new String(request.getParameter("name").getBytes("utf-8"),"iso-8859-1");// 重定向页面 设置String name = new String(request.getParameter("name").getBytes("iso-8859-1"),"utf-8");%>
  4. 特别说明:如果浏览器是 ie6 或 一下版本,则 超链连传输数据 和 sendRedirect() 这两种情况还是会出现乱码(中文个数是奇数时会出现乱码)

    解决方法:

    <% Stirng info = java.net.URLEncoder.encode("字符数据","utf-8");  %>
  5. 尽量使用 post 方式提交数据。


阅读全文
0 0