`
rbible
  • 浏览: 52901 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

String汉字内容编码格式转换

 
阅读更多

字符转换测试:

package a;

public class TestCharset {
    public static void main(String[] args) throws Exception {

        String str = "中国renmin";
        String str1 = new String(str.getBytes(), ChangeCharset.UTF_8);
        String str3 = new String(str1.getBytes(), ChangeCharset.GBK);
        String str2 = new String(str.getBytes(), ChangeCharset.GBK);
        String str4 = new String(str2.getBytes(), ChangeCharset.UTF_8);
        String str5 = new String(str4);
        String str6 = new String(str4.getBytes(), ChangeCharset.GBK);

        System.out.println(str + " str                    " + bytesToHexString(str));
        System.out.println(str1 + " str utf8               " + bytesToHexString(str1));
        System.out.println(str3 + " str utf8 gbk           " + bytesToHexString(str3));
        System.out.println(str2 + " str gbk                " + bytesToHexString(str2));
        System.out.println(str4 + " str gbk utf8           " + bytesToHexString(str4));
        System.out.println(str5 + " new (str gbk utf8)     " + bytesToHexString(str5));
        System.out.println(str6 + " new (str gbk utf8) gbk " + bytesToHexString(str6));

        prt(str + " str                    ", str.getBytes());
        prt(str1 + " str utf8               ", str1.getBytes());
        prt(str3 + " str utf8 gbk           ", str3.getBytes());
        prt(str2 + " str gbk                ", str2.getBytes());
        prt(str4 + " str gbk utf8           ", str4.getBytes());
        prt(str5 + " new (str gbk utf8)     ", str5.getBytes());
        prt(str6 + " new (str gbk utf8) gbk ", str5.getBytes());

    }

    private static String bytesToHexString(String str) {
        byte[] src = str.getBytes();
        StringBuilder stringBuilder = new StringBuilder("");
        if (src == null || src.length <= 0) {
            return null;
        }
        for (byte element : src) {
            int v = element & 0xFF;
            String hv = Integer.toHexString(v);
            if (hv.length() < 2) {
                stringBuilder.append(0);
            }
            stringBuilder.append(hv);
        }
        return stringBuilder.toString();
    }

    private static void prt(String str, byte[] bs) {
        System.out.print("\n " + str);
        for (byte b : bs) {
            System.out.print(b + "  ");
        }
    }
}

 

 结果:

中国renmin str                    d6d0b9fa72656e6d696e
?й?renmin str utf8               3fa7db3f72656e6d696e
?й?renmin str utf8 gbk           3fa7db3f72656e6d696e
中国renmin str gbk                d6d0b9fa72656e6d696e
?й?renmin str gbk utf8           3fa7db3f72656e6d696e
?й?renmin new (str gbk utf8)     3fa7db3f72656e6d696e
?й?renmin new (str gbk utf8) gbk 3fa7db3f72656e6d696e

 中国renmin str                    -42  -48  -71  -6  114  101  110  109  105  110  
 ?й?renmin str utf8               63  -89  -37  63  114  101  110  109  105  110  
 ?й?renmin str utf8 gbk           63  -89  -37  63  114  101  110  109  105  110  
 中国renmin str gbk                -42  -48  -71  -6  114  101  110  109  105  110  
 ?й?renmin str gbk utf8           63  -89  -37  63  114  101  110  109  105  110  
 ?й?renmin new (str gbk utf8)     63  -89  -37  63  114  101  110  109  105  110  
 ?й?renmin new (str gbk utf8) gbk 63  -89  -37  63  114  101  110  109  105  110  

 

 

结论:

1、带有中文的String默认编码格式:GBK

2、由GBK转为UTF-8成功(有正确编码转为错误编码成功)

3、由UTF-8转为GBK失败(由错误编码转回正确编码失败)

4、汉字内容编码格式转换后显示异常

 

 

欢迎讨论

分享到:
评论

相关推荐

    java编码格式转换

    本文将详细介绍如何在不同的编码格式之间进行转换,并探讨一些常见的编码转换错误及其处理方法。 #### Unicode与其它编码之间的转换 Java使用Unicode作为内部表示,这为不同编码之间的转换提供了便利。以下是一些...

    GBK编码转换汉字,汉字转换GBK编码,VC代码实现

    在IT行业中,编码转换是一个常见的任务,特别是在处理中文字符时。GBK编码是GB2312编码的扩展,用于表示更多的汉字和符号,是简体中文环境下广泛使用的一种字符编码。VC++,作为Microsoft的C++开发环境,提供了丰富...

    java字符串的各种编码转换

    根据提供的文件信息,本文将详细解释Java中字符串的不同编码转换方法及原理,并深入探讨每种编码格式的特点。 ### Java字符串的编码转换 在Java中,处理不同字符集之间的字符串转换是一项常见任务。尤其是在处理...

    文件内容替换与文件编码格式转换java源码

    总之,理解文件编码和Java的I/O操作是实现文件内容替换和编码转换的关键。掌握这些技能,不仅能够帮助我们解决实际问题,还能提升我们的编程能力。在实际工作中,我们需要灵活运用这些知识,以便更好地管理和维护...

    一种基于Python实现中文编码格式转换工具的源码

    在这个基于Python的中文编码转换工具中,`code.py`可能是主要的源代码文件。它可能包含了处理编码转换的核心逻辑,包括读取输入的文本,识别其原始编码,然后转换为目标编码,最后将结果以16进制的形式输出。16进制...

    UCS2-汉字互相转换

    综上所述,"UCS2-汉字互相转换"项目涉及的主要技术点包括VB中的Unicode字符串处理、字符编码转换、文件读写以及错误处理。在开发过程中,理解Unicode和UCS2编码的原理,熟悉VB提供的相关API,以及如何处理编码转换中...

    常用中文编码显示及转换

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

    android GBK转换为String

    在Android系统中,大部分内部操作都是基于Unicode的,但有时候我们需要与GBK编码的数据进行交互,比如读取GBK格式的文本文件或网络数据。本文将深入探讨如何在Android中进行GBK与Unicode之间的转换。 首先,我们...

    C# 格式转换大全

    bytearray2string 方法将 byte 数组转换为字符串,使用默认的编码方式来解码 byte 数组。string2bytearray 方法则将字符串转换为 byte 数组,返回的 byte 数组长度可能小于原始字符串的长度。 3. 字符串与 byte ...

    Java文件编码转换源码

    在Java编程语言中,文件编码转换是一个常见的任务,特别是在处理多国语言或者处理不同系统间的文件传输时。本文将深入探讨如何使用Java实现文件编码的转换,主要关注GB2312、UTF-8这两种常见编码格式之间的转换。 ...

    C# 编码自动识别 匹配文件当前编码格式

    在实际应用中,自动识别编码后,我们可能还需要将文件从一种编码转换为另一种编码,这可以通过`Encoding.GetString(byte[])`和`Encoding.GetBytes(string)`方法实现。前者用于将字节数组转换为字符串,后者则是相反...

    j2me 中各种汉字编码相互转换

    在Java ME(J2ME)环境中,汉字编码的...总之,J2ME中的汉字编码转换涉及到对Unicode、UTF-8、GB2312和GBK等编码的理解和操作。正确地处理这些编码转换,能够帮助开发者创建出能在不同设备和平台上正常运行的应用程序。

    航信汉字编码与解码/eterm汉字编码与解码

    航信汉字的编码与解码,编码便于使自己的pid进行汉字传输, 航信汉字编码与解码,eterm汉字编码与解码,汉字编码问题

    批量将汉字转换为拼音、五笔的编码

    批量将汉字转换为拼音和五笔编码是其中的一个重要子任务,尤其对于输入法软件开发者、数据分析人员或者需要处理大量汉字信息的程序员来说。这里我们将深入探讨如何使用Delphi编程语言实现这一功能。 首先,我们来...

    utf8与string的相互转换

    通过查看和学习这些内容,你可以进一步掌握不同编程语言中进行编码转换的技巧,这对于处理多语言文本和跨平台项目至关重要。 总之,理解和熟练掌握UTF-8与字符串的转换是每个程序员的基本技能。无论是为了处理国际...

    汉字中文十六进制显示转换

    综上所述,“汉字中文十六进制显示转换”是一个涉及字符编码、数据转换和串口通信的综合问题。理解并掌握这些概念和方法对于进行跨平台、多语言的软件开发至关重要。在实际工作中,我们不仅要理解理论,还要熟练运用...

    一个将BIG5编码转换为GB2312编码的类

    这两个编码系统都是针对汉字设计的,但它们之间的符号表示并不兼容,因此在处理跨地区的信息时,需要进行编码转换。 **BIG5编码** 是一种广泛用于繁体中文的字符编码标准,由两个字节组成,覆盖了大部分常用和不...

    java文件的编码转换

    GBK是中国大陆广泛使用的中文编码标准,包含了大量的汉字,而UTF-8是一种国际通用的编码,支持全球多种语言,包括中文。 在Java中,我们可以使用`java.nio`包中的`Charset`、`Files`和`Paths`类来读取、写入和转换...

    JAVA程序的编码格式详解

    ### JAVA程序的编码格式详解 #### 一、引言 编码问题一直是开发人员尤其是Java开发者面临的常见挑战之一。由于Java是一种跨平台的语言,因此在不同的操作系统之间存在编码格式的差异,这导致了在处理文本数据时经常...

    PHP 不同编码的转换程序

    总结来说,PHP提供了强大的编码转换工具,通过`iconv`和`mb_string`扩展,可以处理各种编码格式,如GBK和UTF-8之间的转换。在实际开发中,我们可以编写自定义的类或函数,利用这些工具来解决编码不兼容的问题。同时...

Global site tag (gtag.js) - Google Analytics