zoukankan      html  css  js  c++  java
  • get方式中文乱码解决方法

     

    博客分类:

    有的时候 我们在通过后台取前台的数据的时候会出现乱码 
    比如 String username = request.getParameter("username");时就会出现。

    解决办法:如果你想单独解决这一个,那你就用 
    String username = new String(request.getParameter("username").getBytes("iso-8859-1"),"GBK")

    如果想统一解决永无后顾之忧(前提是尽量都采用一种方式,否则以前有用过上面的方式的回出现乱码): 
    如果用的服务器是jboss: 找到serverdefaultdeployjbossweb-tomcat55.sarserver.xml  打开  找到 
    <Connector port="8080" address="${jboss.bind.address}" 
             maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" 
             emptySessionPath="true" 
             enableLookups="false" redirectPort="8443" acceptCount="100" 
             connectionTimeout="20000" disableUploadTimeout="true"/> 
    换成 
    <Connector port="8080" address="${jboss.bind.address}" 
             maxThreads="250" strategy="ms" maxHttpHeaderSize="8192" 
             emptySessionPath="true" 
             enableLookups="false" redirectPort="8443" acceptCount="100" 
             connectionTimeout="20000" disableUploadTimeout="true" URIEncoding="GBK"/> 
    ok 重新发布,重启一下jboss 搞定。

    如果用的是 tomcat服务器:同上,找到 Tomcat 6.0confserver.xml

    <Connector port="8989" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" /> 
    换成 
    <Connector port="8989" protocol="HTTP/1.1" 
                   connectionTimeout="20000" 
                   redirectPort="8443" URIEncoding="GBK" />

    当然这种修改服务器的方法虽然可以解决办法,但是这并不是最好的办法。如果能够用修改程序的办法来达到同样的效果的话 建议还是用修改程序的办法

    <%@ page contentType="text/html; charset=gb2312" language="java" errorPage="" %>
    <html>
    <head>
    <META http-equiv=Content-Type content="text/html; charset=gb2312">

    <%request.setCharacterEncoding("gb2312");%>

    servlet&jsp乱码问题
    SERVLET
    1、页面本身有中文的时候,一个要在写PrintWriter out = resp.getWriter();之前加这句话:
       resp.setContentType("text/html;charset=GBK");
    2、解决POST方式提交表单的中文乱码问题方法:
       在获得第一个参数之前加以下语句:req.setCharacterEncoding("GBK");
    3、解决GET方式提交表单的中文乱码问题方法:
       修改conf目录下的server.xml 在Connector标签中(即修改8080端口的标签)中加一句话
       URIEncoding="GBK"

    JSP
    加入以下两段代码则可解决大部分乱码问题:
    <%@ page contentType="text/html;charset=GBK"%>
    <%request.setCharacterEncoding("GBK");%>

    解决Servlet中的中文乱码问题:
    1、静态中文信息乱码
    response.setContentType("text/html; charset=gbk");
    2、中文输入乱码
    request.setCharacterEncoding("gbk");
    String name =new String(request.getParamete("name").getBytes("iso-8859-1"));

    servlet中输出流的默认字符编码是ISO-8859-1的

    fileName=response.encodeURL(new String(fileName.getBytes(),"ISO8859_1"));//转码


    运行后结果如下:


    匿名 回答:2 人气:3 解决时间:2010-04-22 22:28 
    满意答案好评率:0% 楼上的说法是对的。。但是写的不对

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

    name = new String(name.getBytes("ISO-8859-1"),"UTF-8");

     
    评价答案
    您已经评价过!好:0 您已经评价过!不好:0 您已经评价过!原创:0 您已经评价过!非原创:0 废人 回答采纳率:36.7% 2010-04-22 21:06 满意答案好评率:0% 首先你要弄清楚  如果是用url传的话  url的传递是用编码 ISO-8859-1  而你的编码不是这个

    所以你去到的值是乱码,你要去转码就可以了

    比如常用的方式

     request.getParameter("name")=new String(iso.getBytes("ISO-8859-1"),"UTF-8");

    public static String toChi(String input) {
        try {
        //byte[] bytes = input.getBytes("ISO8859-1");

        //return new String(bytes);

            //下面两行针对tomcat5。5 配置 encode为utf-8时候
            byte[] bytes = input.getBytes("UTF-8");
            return new String((new String(bytes)).getBytes("ISO-8859-1"), "gb2312");
        }catch(Exception ex) {
        }
        return null;
        }

  • 相关阅读:
    sql server实用要点全解
    C# EntityFramwork(Model First)使用要点
    c# linq查询语句详细使用介绍
    c# webapi2 实用详解
    create-react-app脚手架中配置sass
    redux使用教程详细介绍
    react-router4.x 实用例子(路由过渡动画、代码分割)
    react-router4.x 组件和api介绍
    leetcode-mid-backtracking -22. Generate Parentheses-NO
    leetcode-mid-backtracking-17. Letter Combinations of a Phone Number
  • 原文地址:https://www.cnblogs.com/qjack/p/3345502.html
Copyright © 2011-2022 走看看