`
Phile.net
  • 浏览: 26926 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

URL中汉字和utf编码间转换问题

阅读更多

 1.解决ajax提交中文、URL中文参数传递后的乱码问题的解决办法
 2.JAVA 中URL链接中文参数乱码的处理方法
 3.JAVA URL中带有中文时的处理

 

今天我们所说的中文,没有在url后面的参数中,如果中文在url中间,那如果我要处理,该怎么办呢?
 呵呵,不着急,我们照样可以处理:跟我来,照着做就是了

 

Java代码如下:
package com.gjob.common;

public class URLtoUTF8 {
    //转换为%E4%BD%A0形式
    public static String toUtf8String(String s) {
        StringBuffer sb = new StringBuffer();
        for (int i = 0; i < s.length(); i++) {
            char c = s.charAt(i);
            if (c >= 0 && c <= 255) {
                sb.append(c);
            } else {
                byte[] b;
                try {
                    b = String.valueOf(c).getBytes("utf-8");
                } catch (Exception ex) {
                    System.out.println(ex);
                    b = new byte[0];
                }
                for (int j = 0; j < b.length; j++) {
                    int k = b[j];
                    if (k < 0)
                        k += 256;
                    sb.append("%" + Integer.toHexString(k).toUpperCase());
                }
            }
        }
        return sb.toString();
    }

    //将%E4%BD%A0转换为汉字
    public static String unescape(String s) {
        StringBuffer sbuf = new StringBuffer();
        int l = s.length();
        int ch = -1;
        int b, sumb = 0;
        for (int i = 0, more = -1; i < l; i++) {
            /* Get next byte b from URL segment s */
            switch (ch = s.charAt(i)) {
            case '%':
                ch = s.charAt(++i);
                int hb = (Character.isDigit((char) ch) ? ch - '0'
                        : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                ch = s.charAt(++i);
                int lb = (Character.isDigit((char) ch) ? ch - '0'
                        : 10 + Character.toLowerCase((char) ch) - 'a') & 0xF;
                b = (hb << 4) | lb;
                break;
            case '+':
                b = ' ';
                break;
            default:
                b = ch;
            }
            /* Decode byte b as UTF-8, sumb collects incomplete chars */
            if ((b & 0xc0) == 0x80) { // 10xxxxxx (continuation byte)   
                sumb = (sumb << 6) | (b & 0x3f); // Add 6 bits to sumb   
                if (--more == 0)
                    sbuf.append((char) sumb); // Add char to sbuf   
            } else if ((b & 0x80) == 0x00) { // 0xxxxxxx (yields 7 bits)   
                sbuf.append((char) b); // Store in sbuf   
            } else if ((b & 0xe0) == 0xc0) { // 110xxxxx (yields 5 bits)   
                sumb = b & 0x1f;
                more = 1; // Expect 1 more byte   
            } else if ((b & 0xf0) == 0xe0) { // 1110xxxx (yields 4 bits)   
                sumb = b & 0x0f;
                more = 2; // Expect 2 more bytes   
            } else if ((b & 0xf8) == 0xf0) { // 11110xxx (yields 3 bits)   
                sumb = b & 0x07;
                more = 3; // Expect 3 more bytes   
            } else if ((b & 0xfc) == 0xf8) { // 111110xx (yields 2 bits)   
                sumb = b & 0x03;
                more = 4; // Expect 4 more bytes   
            } else /*if ((b & 0xfe) == 0xfc)*/{ // 1111110x (yields 1 bit)   
                sumb = b & 0x01;
                more = 5; // Expect 5 more bytes   
            }
            /* We don't test if the UTF-8 encoding is well-formed */
        }
        return sbuf.toString();
    }
    
    public static void main(String[] args){
        System.out.println(URLtoUTF8.toUtf8String("你"));
        System.out.println(URLtoUTF8.unescape("%E4%BD%A0%20%E5%A5%BD"));
        
    }
}
 

############
运行结果:

%E4%BD%A0
你 好

 

http://topic.csdn.net/u/20090722/20/5215fa11-3bfe-40b0-995b-2d476974dff3.html

分享到:
评论

相关推荐

    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编码,它可以表示...

    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相关函数均来自网上,做了小小...

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

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

    易语言URL编码转换模块

    总之,易语言URL编码转换模块是易语言环境中一个重要的辅助工具,它为处理URL编码问题提供了便利,特别是对于那些需要处理中文字符的开发者来说,能够有效地解决字符编码的转换问题,提升程序的健壮性。通过学习和...

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

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

    C#写的 GBK GB2312 UTF-8转换

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

    utf8与中文转换工具

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

    url编码转换.rar

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

    URL中文转换

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

    常用中文编码显示及转换

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

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

    综上所述,易语言编码转换模块是一个用于处理文本编码问题的工具,特别是将不同编码格式的数据转换为GB2312,以适应中国早期的计算机系统和应用。这个模块对于处理老式系统中的数据,或者需要与GB2312环境交互的现代...

    如何将编码转换为UTF-8

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

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

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

    豆葵GB-BIG5-UTF-8 文件编码批量转换工具

    总的来说,"豆葵GB-BIG5-UTF-8 文件编码批量转换工具"是一个实用的解决方案,解决了在处理中文字符时经常遇到的编码问题。通过理解不同编码格式的特性,以及掌握使用这个工具的方法,用户可以在处理中文文件时更加...

    jsp使用URL编码传递中文参数问题.doc

    综上所述,处理JSP中URL编码传递中文参数的关键在于理解字符编码的转换过程,并确保所有环节的编码一致。通过正确使用`URLEncoder.encode()`进行编码,以及适当地解码`request.getParameter()`返回的值,可以有效地...

    winForm中进行Utf-8 及 GB2312转换

    总之,理解和掌握字符编码转换以及Url编码在winForm开发中是非常重要的,这有助于确保程序正确处理和显示各种字符,避免乱码问题,并确保数据在网络传输中的完整性和准确性。在遇到编码问题时,要灵活运用.NET提供的...

    URL编码,Gb2312页面提交到Utf-8页面

    本文将深入探讨如何实现从Gb2312编码的网页向Utf-8编码网页的数据提交过程中的URL编码转换。Gb2312是一种广泛应用于中国大陆地区的字符编码标准,而UTF-8则因其能够支持全球绝大多数语言的特性,在互联网领域得到...

    url编码gbk格式

    URL编码,全称为统一资源定位符(Uniform Resource Locator)编码,是互联网上数据通信的一种标准格式,用于将非ASCII字符转换为可以在URL中安全传输的形式。GBK编码是中国大陆广泛使用的汉字编码标准,它包含了GB...

Global site tag (gtag.js) - Google Analytics