`

URL中汉字和utf编码转换

    博客分类:
  • java
阅读更多
java 代码
  1. //转换为%E4%BD%A0形式   
  2. public static String toUtf8String(String s) {   
  3.           StringBuffer sb = new StringBuffer();   
  4.           for (int i = 0; i < s.length(); i++) {   
  5.                   char c = s.charAt(i);   
  6.                   if (c >= 0 && c <= 255) {   
  7.                           sb.append(c);   
  8.                   } else {   
  9.                           byte[] b;   
  10.                           try {   
  11.                                   b = String.valueOf(c).getBytes("utf-8");   
  12.                           } catch (Exception ex) {   
  13.                                   System.out.println(ex);   
  14.                                   b = new byte[0];   
  15.                           }   
  16.                           for (int j = 0; j < b.length; j++) {   
  17.                                   int k = b[j];   
  18.                                   if (k < 0)   
  19.                                           k += 256;   
  20.                                   sb.append("%" + Integer.toHexString(k).toUpperCase());   
  21.                           }   
  22.                   }   
  23.           }   
  24.           return sb.toString();   
  25.   }   
  26.   
  27. //将%E4%BD%A0转换为汉字   
  28.       public static String unescape(String s) {   
  29.             StringBuffer sbuf = new StringBuffer () ;   
  30.             int l  = s.length() ;   
  31.             int ch = -1 ;   
  32.             int b, sumb = 0;   
  33.             for (int i = 0, more = -1 ; i < l ; i++) {   
  34.               /* Get next byte b from URL segment s */  
  35.               switch (ch = s.charAt(i)) {   
  36.                 case '%':   
  37.                   ch = s.charAt (++i) ;   
  38.                   int hb = (Character.isDigit ((char) ch)    
  39.                             ? ch - '0'   
  40.                             : 10+Character.toLowerCase((char) ch) - 'a') & 0xF ;   
  41.                   ch = s.charAt (++i) ;   
  42.                   int lb = (Character.isDigit ((char) ch)   
  43.                             ? ch - '0'   
  44.                             : 10+Character.toLowerCase ((char) ch)-'a') & 0xF ;   
  45.                   b = (hb << 4) | lb ;   
  46.                   break ;   
  47.                 case '+':   
  48.                   b = ' ' ;   
  49.                   break ;   
  50.                 default:   
  51.                   b = ch ;   
  52.               }   
  53.               /* Decode byte b as UTF-8, sumb collects incomplete chars */  
  54.               if ((b & 0xc0) == 0x80) {                        // 10xxxxxx (continuation byte)   
  55.                 sumb = (sumb << 6) | (b & 0x3f) ;        // Add 6 bits to sumb   
  56.                 if (--more == 0) sbuf.append((char) sumb) ; // Add char to sbuf   
  57.               } else if ((b & 0x80) == 0x00) {                // 0xxxxxxx (yields 7 bits)   
  58.                 sbuf.append((char) b) ;                        // Store in sbuf   
  59.               } else if ((b & 0xe0) == 0xc0) {                // 110xxxxx (yields 5 bits)   
  60.                 sumb = b & 0x1f;   
  61.                 more = 1;                                // Expect 1 more byte   
  62.               } else if ((b & 0xf0) == 0xe0) {                // 1110xxxx (yields 4 bits)   
  63.                 sumb = b & 0x0f;   
  64.                 more = 2;                                // Expect 2 more bytes   
  65.               } else if ((b & 0xf8) == 0xf0) {                // 11110xxx (yields 3 bits)   
  66.                 sumb = b & 0x07;   
  67.                 more = 3;                                // Expect 3 more bytes   
  68.               } else if ((b & 0xfc) == 0xf8) {                // 111110xx (yields 2 bits)   
  69.                 sumb = b & 0x03;   
  70.                 more = 4;                                // Expect 4 more bytes   
  71.               } else /*if ((b & 0xfe) == 0xfc)*/ {        // 1111110x (yields 1 bit)   
  72.                 sumb = b & 0x01;   
  73.                 more = 5;                                // Expect 5 more bytes   
  74.               }   
  75.               /* We don't test if the UTF-8 encoding is well-formed */  
  76.             }   
  77.             return sbuf.toString() ;   
  78.           }   
分享到:
评论

相关推荐

    汉字转为HTML的URL编码

    搜集了网上的VBA函数,在excel中通过函数将汉字转为两种类型的URL编码,例如将 天空 二字转化为GB2312的“%CC%EC%BF%D5”或者是UTF-8的 “%E5%A4%A9%E7%A9%BA”。方便用于连接转换。VBA相关函数均来自网上,做了小小...

    Url编码转换程序 gb2312 utf-8 编码 解码

    Url编码转换程序 gb2312 utf-8 编码 解码,呵呵,这个不算什么程序,就是写了个界面,运行下而已,算是个方便的小工具吧

    西西万能编码转换器

    URL 编码、URL解码、UTF 8_编码、UTF 8_解码、ASCII 码值、MD 5+BASE 64 字符转16进制 、16进制转字符、base64编码、base64解码、域名转 IP、数字转人民币 MD5_16 、 MD5_ 32 、vbUnicode、vbFormUnicode、简体转...

    汉字编码转换器-对文字进行各种编码的工具

    可以把文字进行各种编码转换,比如gbk-utf8、或者对文字进行url编码解码。绿色的。

    常用中文编码显示及转换

    显示汉字页面编码及URL编码格式,在GBK和UTF-8之间进行转换,提供源码供参考。

    GB18030汉字的GB18030 Unicode URL编码对照表.xlsx

    目前大部分的网站,都是使用的UTF-8编码。例如发送一段二进制到服务器时,服务器规定该二进制内容的编码...附件是GB18030包含的21004个汉字的GB18030编码、Unicode编码、URL编码对照表,可用于解决中文乱码转换恢复。

    常用编码(Unicode,UTF-8,GBK)转换工具

    用于常用编码转换,包括BREW、JAVA等语言UNICODE字符串定义格式,网页编码,GBK及UTF-8的URL编码等

    解决了浏览器URL地址栏直接输入get参数值包含中文时的urlencode编码格式问题

    原来urlencode这个函数有2中编码方式,一种是gbk格式的编码,一种是utf-8格式的。并且这个格式居然不能再这个函数里面设置,导致这个结果不可控制,在不同浏览器环境下面结果不同,不能得到自己想要的格式编码。在...

    python实现中文转换url编码的方法

    主要介绍了python实现中文转换url编码的方法,结合实例形式分析了Python针对中文的gbk与utf-8编码转换的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

    易语言URL编码转换模块

    易语言URL编码转换模块源码 系统结构:GBK编码转换,UTF8编码转换, ======程序集1 | | | |------ _启动子程序 | | | |------ _临时子程序 | | | |------ GBK编码转换 | | | |------ UTF8编码转换

    JS表单传值和URL编码转换

    因为URL传过去的数据不支持中文字符和一些特殊符号 所以需要转换一下编码 实现效果:网页1的表单数据传到网页2并显示出来 网页1代码如下: &lt;!DOCTYPE html&gt; &lt;html lang="en"&gt; &lt;head&gt; &lt;meta ...

    将字符串转换成gb2312或者utf-8编码的参数(js版)

    直接在url中传递中文参数时,读到的中文都是乱码,那么我们应该怎么将这些参数转换呢,接下来与大家分享下将字符串转换成utf-8或者gb2312编码的参数的技巧

    web程序开发中的URL乱码解决方案

    在服务器端/后台/后台程序中设置请求流和响应流的编码方式和页面上的编码方式一致:request().setCharacterEncoding("utf-8");response().setCharacterEncoding("ut f-8");response().setContentType("text/html;...

    JS对URL字符串进行编码/解码分析

    例如:发送页与接受页的编码格式(Charset)不一致(假设发送页面是GB2312而接收页面编码是 UTF-8),使用escape()转换传输中文字串就会出现乱码问题。 以下是JS下对URL进行编/解码的各种方法: escape 方法:返回一个...

    Url 转化工具,c#

    Url 转化工具 把中文转换成 Gb32编码 例如 测试 转:%b2%e2%ca%d4 把中文转换成 Utf8编码 例如 测试 转:%e6%b5%8b%e8%af%95 呵呵 这在传送Xml 时候有的时候用到

    PHP解决URL中文GBK乱码问题的两种方法

    也可以通过iconv(‘utf-8’, ‘gb2312’, $ret)对接收到的数据进行编码转换。 您可能感兴趣的文章:PHP fopen 读取带中文URL地址的一点见解PHP中文URL编解码(urlencode()rawurlencode()php中解析带中文字符的url...

    asp.net URL编码与解码

    如果你的value字符串中包含了=或者&,那么势必会造成接收Url的服务器解析错误,因此必须将引起歧义的&和=符号进行转义,也就是对其进行编码。 又如,Url的编码格式采用的是ASCII码,而不是Unicode,这也就是说你不能...

    Android UTF-8转码实例详解

    在项目中可能会遇到url中有中文的情况,这个时候我们可能需要对url进行编码 mport java.io.UnsupportedEncodingException; import java.net.URLDecoder; import java.net.URLEncoder; public class UTFTest { ...

    awvs 助手,可以自动化导入 url 和自动生成报告,并分类标识。

    3. 可以批量导入, 但是必须按指定格式 ( 系统名称 ,url地址),可以参考例子url.txt 4. 可以批量生成报告 5.可以批量导出报告,且文件名就是系统名称,非常方便。默认是导出html报告格式。 6.注意文本文件的...

Global site tag (gtag.js) - Google Analytics