zoukankan      html  css  js  c++  java
  • 关于URL后面传中文方法总结

    声明:本文原创,转载请注明出处。

    测试环境:服务器tomcat6.0,开发工具Myeclipse6.5,架构struts1.2。已经配置了字符过滤器初始值gb2312。


    例子:传值 <form name="loginForm" action="login.do?name=卡卡 " method="post">
    注意:method="post"中post不能改用get。因为get只支持ascii编码。测试时用get报空指针异常。
    方法1:如果你用的是tomcat。则可以指定tomcat配置文件server.xml中Connector标签属性URIEncoding="gb2312"。
    <Connector port="8080" protocol="HTTP/1.1"
                   connectionTimeout="20000"
                   redirectPort="8443" URIEncoding="gb2312"/>

    属性useBodyEncodingForURI="true" 可以加也可以不加。
    action中简单的取值即可:String name=request.getParameter("name").trim();

    注解:其实你如果不在SERVER.XML里面配置uriencoding=gb2312的话,系统默认的URL的传递是TOMCAT默认的iso的格式。

    方法2:取值:String name=request.getParameter("name").trim();
           解码:name=new String(name.getBytes("ISO-8859-1"),"GBK");

    要进行异常处理:

    try {
     name=new String(name.getBytes("ISO-8859-1"),"GBK");
         } catch (UnsupportedEncodingException e) {
      e.printStackTrace();
         }
    注解:其中第一个参数Iso-8859-1指的是现在的编码方式,而第二个参数是要转换成的目标编码方式,因为网页往往默认编码是Iso-8859-1,而汉字简体编码是gb2312,简繁体是gbk。

    注解:方法1和方法2支持汉字中间有空格,空格在地址栏中显示%20,http://localhost:8080/meander/jsp/login.do?name=卡%20卡,action中空格被原样打出。

     

    方法3:页面上对URL编码:String name="卡卡";
          <form name="loginForm" action="login.do?name=<%=java.net.URLEncoder.encode(name, "gb2312")%> " method="post">
          后台action解码:
          String name=request.getParameter("name").trim();
          name=java.net.URLDecoder.decode(name, "gb2312");

    注解:方法3在测试时没有成功,不知道什么原因。编码方式gb2312,utf-8和Iso-8859-1都测试了,没有成功。

     

    总结:如果用Tomcat服务器,对于这样的问题,通常在Tomcat的server.xml配置URIEncoding="UTF-8"来处理GET方法里的汉字数据,
    然后在web.xml配置一个SetCharacterEncoding过滤器,来处理POST方法里的汉字数据,然后代码里直接使用request.getParameter()取出来的数据,不用再进行额外的字符集转换操作。
    另外,URLEncoding 最好用 UTF-8 转码,当然,用 GB18030/GBK/GB2312 来转码也可以。

  • 相关阅读:
    C语言ASM汇编内嵌语法
    Linux下安装安装arm-linux-gcc
    苹果手机(ios系统)蓝牙BLE的一些特点
    蓝牙BLE数据包格式汇总
    蓝牙BLE4.0的LL层数据和L2CAP层数据的区分与理解
    nrf52840蓝牙BLE5.0空中数据解析
    nrf52840蓝牙BLE5.0空中速率测试(nordic对nordic)
    nrf52832协议栈S132特性记录
    使用 Open Live Writer 创建我的第一个博文
    Codeforces Round #691 (Div. 2) D
  • 原文地址:https://www.cnblogs.com/yefengmeander/p/2887853.html
Copyright © 2011-2022 走看看