JavaScript中编码有三种方法:escape、encodeURI、encodeURIComponent,地址栏中那些%XX就是汉字对应的字节被encodeURI编码格式转了。一个字节对应一个%

转换方式如下:

public void doGet(HttpServletRequest request, HttpServletResponse response)
   throws ServletException, IOException {

String line = request.getQueryString();
  System.out.println(line);
  
  String isDecodeUrl = URLDecoder.decode(line, "UTF-8");//将带汉字的encodeURI编码转换成字节,然后用UTF-8格式对字节解码
  System.out.println(isDecodeUrl); 
  
  String reg = "[\\u4e00-\\u9fa5]+";//汉字的unicode范围
  StringBuilder chineseWord = new StringBuilder();
  Pattern p = Pattern.compile(reg);//匹配规则封装
  Matcher m = p.matcher(isDecodeUrl);//将匹配规则和要匹配的字符串组合生成匹配引擎
    while(m.find())
     chineseWord.append(m.group());//用正则取得所有汉字
  System.out.println(chineseWord.toString());

String cnm = URLEncoder.encode(chineseWord.toString(), "GBK");//将汉字用GBK编码转成字节,然后用encodeURI进行编码。
  System.out.println(cnm);
  
  isDecodeUrl = URLDecoder.decode(cnm, "GBK");//做个试验验证是不是能正常转回来
  System.out.println(isDecodeUrl);
  
  response.setCharacterEncoding("GBK");
  response.setHeader("Content-type","text/html;charset=GBK");
  PrintWriter out = response.getWriter();
  out.println(isDecodeUrl);
 }

servlet request getQueryString 汉字的URI编码如何转码的更多相关文章

  1. servlet request

    request.getRequestURI(); request.getRequestURL(); getQueryString();//返回查询信息 getRemoteAddr();//得到来访者地 ...

  2. 获取完整的URL request.getQueryString()

    public String codeToString(String str) { String strString = str; try { byte tempB[] = strString.getB ...

  3. jquery ajax到servlet出现中文乱码(utf-8编码下)

    个人遇到的该问题有两大类: 第一类很普遍,就是jsp页面编码没有规定,servlet中接收参数没有转码,response没有使用setContentType()和setCharacterEncodin ...

  4. Web应用中request获取path,URI,URL

    Web应用中有各种获取path或URI,URL的方法,假设网页访问地址: http://localhost:8080/tradeload/TestServlet Web应用context: /trad ...

  5. URI编码解码和base64

    概述 对于uri的编解码,在js中有3对函数,分别是escape/unescape,encodeURI/decodeURI,encodeURIComponent/decodeURIComponent. ...

  6. .Net(c#)汉字和Unicode编码互相转换

    {"Tilte": "\u535a\u5ba2\u56ed", "Href": "http://www.cnblogs.com&q ...

  7. JavaScript及C# URI编码详解

    转载自:http://www.cnblogs.com/artwl/archive/2012/03/07/2382848.html 应用Uri编码,可以把一个或多个Uri作为另一个Uri的参数(如果不用 ...

  8. 从此不再惧怕URI编码:JavaScript及C# URI编码详解

    混乱的URI编码 JavaScript中编码有三种方法:escape.encodeURI.encodeURIComponent C#中编码主要方法:HttpUtility.UrlEncode.Serv ...

  9. 一个汉字的ASCII编码 

    一个汉字的ASCII编码:  

随机推荐

  1. bzoj 1834: [ZJOI2010]network 网络扩容 -- 最大流+费用流

    1834: [ZJOI2010]network 网络扩容 Time Limit: 3 Sec  Memory Limit: 64 MB Description 给定一张有向图,每条边都有一个容量C和一 ...

  2. bzoj 3224 普通平衡树 vactor的妙用

    3224: Tyvj 1728 普通平衡树 Time Limit: 1 Sec  Memory Limit: 256 MB 题目连接 http://www.lydsy.com/JudgeOnline/ ...

  3. AS3使用Json 传复杂数据 -------- 用数组而不是向量

    package { public class Person { private var name:String; public function get Name():String { return ...

  4. MySQL遇到的一个卡库问题及对update的学习

    近日遇到个卡库的问题,环境是MySQL5.5.12,报错信息如下 ) and was aborted. There is a chan ce that your master is inconsist ...

  5. Jquery UI 中Tree组件的json格式,java递归拼接demo

    数据库中表数据,如下图: 实现的需求是,如果suporgcode数据为null 的情况下,表示在一级节点 "请选择" 的二级节点,然后是如:3和36 是1的子节点,一步一步的节点延 ...

  6. Div+CSS展示物流跟踪轨迹信息

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  7. Linux下查找命令(收集整理)

    原文:http://blog.csdn.net/sunstars2009918/article/details/8510878 一.Linux查找文件的相关命令 常 用 命 令 简要中文说明 程序所在 ...

  8. 【提醒】使用 iptables 时,特别注意 规则的顺序

    在 centos 上安装 redis 服务器,很快就搞定了,服务器上使用 redis-cl 测试都没有问题了. 但到宿主机上测试,怎么测试都不通过,关键是:关闭了 centos 的 Iptables ...

  9. android组件之DrawerLayout(抽屉导航)-- 侧滑菜单效果

    转载请注明出处:http://blog.csdn.net/crazy1235/article/details/41696291 一. 介绍     导航抽屉显示在屏幕的最左侧,默认情况下是隐藏的,当用 ...

  10. ECMAScript新特性【一】--Object.create

    Object.create(prototype, descriptors) :创建一个具有指定原型且可选择性地包含指定属性的对象 参数: prototype 必需.  要用作原型的对象. 可以为 nu ...