`

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.           }   
分享到:
评论

相关推荐

    GBK编码转换和UTF-8编码转换模块源码

    在资源中提到的“GBK编码转换为URL编码”和“UTF-8编码转换为URL编码”,URL编码(也称为percent-encoding)是URL的一部分,用于包含非ASCII字符或者URL中不能直接使用的特殊字符。在URL中,某些字符如空格、中文等...

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

    在这个“Url编码转换程序”中,包含了两种重要的编码方式:GB2312和UTF-8。GB2312是中国大陆广泛使用的简体中文字符集,它包含6763个汉字,主要用于早期的计算机系统。而UTF-8是一种变长的Unicode编码,它可以表示...

    易语言URL编码转换模块

    易语言URL编码转换模块源码提供了实现这些功能的具体代码,开发者可以通过阅读和理解源码来学习如何在易语言中进行URL编码和解码操作。源码通常包括函数定义、参数传递、编码逻辑等部分,这对于深入理解编码过程以及...

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

    总之,汉字编码转换器是处理中文字符编码问题的有效工具,能够帮助用户解决因编码不匹配而产生的各种问题,确保信息的准确传递和显示。在日常的编程、网页制作或数据处理中,它都扮演着不可或缺的角色。

    java中文乱码之解决URL中文乱码问题的方法

    URL中文乱码问题主要是由于URL编码和解码过程中的不一致导致的。下面将详细介绍如何解决这个问题,并探讨几种常用的方法。 首先,我们需要了解URL编码的基本原理。URL(统一资源定位符)不能包含某些特殊字符,如...

    汉字转为HTML的URL编码

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

    易语言编码转换将任何编码转换到GB2312模块源码

    在IT行业中,编码转换是一项重要的任务,特别是在处理不同系统、平台或语言之间的数据交换时。易语言是一款中国本土开发的编程环境,它以其简洁的语法和面向初学者的设计而受到欢迎。本模块源码主要涉及的是编码转换...

    中文 Big5/GBK/Unicode/UTF8 内码转换器

    《中文编码转换器详解:Big5、GBK、Unicode与UTF8的互换之道》 在计算机世界里,字符编码是沟通人类语言与机器之间的重要桥梁。本文将详细讲解标题所提及的“中文 Big5/GBK/Unicode/UTF8 内码转换器”这一工具,...

    url编码转换.rar

    总之,"url编码转换.rar"提供的工具解决了在网络通信中常见的编码问题,特别是涉及ANSI和UTF-8编码间的转换。通过"code.exe"这个程序,用户可以方便地进行URL编码转换,确保URL在各种环境下的正确性和兼容性。对于...

    utf8与中文转换工具

    4. 软件应用:了解和使用专门的编码转换工具,如"得心应手UTF-8编码转换器",来解决实际工作中的编码问题。 5.URL链接:了解.url文件的用途,以及如何通过它访问相关的网络资源。 掌握这些知识对于处理多语言内容的...

    常用中文编码显示及转换

    本文将深入探讨“常用中文编码显示及转换”的主题,包括汉字的页面编码、URL编码,以及在GBK和UTF-8之间的转换方法。同时,我们还将分析提供的源码文件,以了解其实现细节。 首先,我们要明白汉字的页面编码。页面...

    URL中文转换

    1. UTF-8编码:在处理中文字符时,通常先将其转换为UTF-8编码,然后再进行URL编码。因为UTF-8是一种变长的字符编码方式,可以表示Unicode字符集中的所有字符。 2. 使用`java.net.URLEncoder.encode()`方法:在...

    如何将编码转换为UTF-8

    "UTF-8 编码转换详解" 1. UTF-8 编码的重要性:在 WEB 开发中,UTF-8 编码扮演着非常重要的角色,特别是在传递中文时,必须经过编码的动作,否则可能会出现乱码的情况。 2. 使用 URLEncoder.encode() 方法:在 ...

    C#写的 GBK GB2312 UTF-8转换

    但需要注意的是,在处理URL时,由于URL中可能包含特殊字符,可能需要进行URL编码(如使用`Uri.EscapeDataString()`)和解码(如使用`Uri.UnescapeDataString()`)。 在实际开发中,我们可能会遇到各种各样的编码...

    java使用URLDecoder和URLEncoder对中文字符进行编码和解码

    在Java编程语言中,`URLDecoder`和`URLEncoder`是两个非常重要的工具类,主要用于处理URL中的中文字符和其他特殊字符。这两个类位于`java.net`包下,可以帮助开发者进行字符串编码和解码,确保数据在网络传输过程中...

    编码转换工具集

    3. 网络传输:HTTP协议默认使用ASCII编码,但在传输包含非ASCII字符的数据时,如中文,需要进行编码转换,通常会使用URL编码(%xx形式)或者在HTTP头中指定字符编码,如Content-Type: text/html; charset=utf-8。 4...

    URLEncode编码转换软件

    在压缩包内的文件名称列表中,我们可以推测这些可能是VB代码文件或者示例,分别对应了UTF-8和GB2312的编码转换功能。用户可以通过查看这些文件了解如何在VB中实现这两种编码转换操作,包括导入相关库、调用函数以及...

    易语言-GBK编码转换和UTF-8编码转换模块

    总之,理解和应用GBK与UTF-8编码转换,以及URL编码,是软件开发尤其是网络编程中不可或缺的一部分。易语言的编码转换模块源码为易语言用户提供了方便,有助于他们更好地应对各种编码问题,提高程序的兼容性和功能性...

    汉字编码转换

    汉字编码转换是计算机科学领域中的一个重要知识点,尤其是在处理中文字符时。这个过程涉及到将汉字从其文本形式转换成不同类型的编码表示,以便于计算机存储、处理和传输。下面将详细介绍汉字编码转换的主要方面,...

    西西万能编码转换器

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

Global site tag (gtag.js) - Google Analytics