`
rbible
  • 浏览: 50387 次
  • 性别: 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、汉字内容编码格式转换后显示异常

 

 

欢迎讨论

分享到:
评论

相关推荐

    微信小程序String转gbk编码的byte数组

    项目中用到蓝牙打印机,但是蓝牙打印机只支持gbk编码,而小程序用的是Unicode,此资源解决了Unicode转gbk编码问题

    android GBK转换为String

    提供给android用户,GBK和汉字互相转换,Unicode和GBK互转。

    c++_将数字转换为汉字

    #include"string" int main() { int nNumber; cout输入一个阿拉伯数字:"; cin&gt;&gt;nNumber; char str[]={"零"}; switch(nNumber) { case 0: { strcpy(str,"零"); break; } case 1: { strcpy...

    C# json格式解析,Json格式字符串与C#对象相互转换,类库+使用案例,注释详细

    C# json格式转换,Json格式字符串与C#对象相互转换,类库和测试demo 写了一个json与C#对象相互装换的类库,直接调用就行,有测试案例,代码注释非常详细 部分方法: /// 将Json字符串解析为C#中的对象 /// Json格式...

    C++Builder String,UNICODE,UTF8,ANSI互转的类.rar_c

    C++Builder String,UNICODE,UTF8,ANSI互转的类,类的互相转换

    汉字转全拼音或拼音首字母,支持gb2312和utf8编码

    汉字转全拼音或拼音首字母,支持gb2312和utf8编码 ,附带函数说明, 汉字转换为全拼音或拼音首字母 使用方法: include(ROOT_PATH.'includes/cls_chart_pinyin.php'); echo Pinyin('中国人','utf-8',false); 函数...

    Unicode和中文的相互转换(C++代码)

    Unicode和中文的相互转换——VS2019的C++控制台项目(x64\x86\Debug\Release已编译) 1. bool ChineseToUnicode(CString cstr, string & str); 望断秋高和待雪初平__ChineseToUnicode:\u671b\u65ad\u79cb\u9ad8\u...

    PB的utf-8转换

    PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa

    c++ 汉字编码转换支持 utf-8 和 gb5 gb2312

    ustring, an wrapper of std::basic_string, provides supports in converting an external code string to an internal code string automatically. I think ustring's performance may be as effective as the ...

    js转换汉字通过URL传值避免乱码

    这是一个JS把汉字转换编码格式避免乱码的类,相当于ASP或是.NET中的UrlEncode方法.使用方法是var str = UrlEncode("这里是你要转换的汉字");这个方法有个缺点,不支持全角标点,所以要配合下面的方法把全角转换半角才...

    Java 所有字符串转UTF-8 万能工具类-GetEncode.java

    不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);

    php字符编码转换之gb2312转为utf8

    在php中字符编码转换我们一般会用到iconv与mb_convert_encoding进行操作,但是mb_convert_encoding在转换性能上比iconv要差很多哦。string iconv ( string in_charset, string out_charset, string str ) 注意:第二...

    VB.net 汉字拼音码转换 (支持简繁体汉字、全角数字字母)

    写了个转换字符的类,汉字(简繁体)转换拼音首字母编码 包括:全角字母数字转换。输入:任意字符串, 输出:字母加数字。 PyZm(ByVal Str As String, Optional ByVal FH As Integer = 0):获取单字母码串。 Dyz...

    C++ 汉字UTF-8字符串处理类库

    很多人喜欢用CString 或std:string,但是他们的缺点是不能完成汉字各种类型之间的转换,提供三种类库ascString,ucsString,utfString以及工具utfCount,utf8_ucs2_t,tcf8_ucs4_t类库,用于各种字符串之间的直接转换`...

    JavaScript中字符串与Unicode编码互相转换的实现方法

    本文实例讲述了JavaScript中字符串与Unicode编码互相转换的实现方法。分享给大家供大家参考,具体如下: 这段代码演示了JavaScript中字符串与Unicode编码的转换: // 为了控制台的演示方便, 变量没有添加 var 定义 /...

    详解PHP编码转换函数应用技巧

    可以在有需要的使用场合(如:解决在GB2312编码环境下使用Ajax产生的中文字乱码的问题)方便进行编码转换,以解决网页乱码的问题,使用非常方便,效率非常高,几乎支持所有编码。PHP 4 &gt;= 4.0.6、PHP 5 版本支持。 ...

    linux C 汉字串与utf-8串相互转化代码

    linux C/c++ 源代码,将中文字串与UTF-8格式字串相互转化,我在项目中使用的代码,完全可用

    JavaWeb开发技术-解决中文输出乱码问题.docx

    使用setContentType(String type)方法设置编码,或使用setCharacterEncoding(String charset)和setHeader(String name,String value)设置编码和解码方式来解决中文输出乱码。 参考代码 编写ChineseServlet.java,...

    VB(Visual Basic) UTF8 字符编码

    VB(Visual Basic) UTF8 字符...这里我们做了一小方法、直接先将我们要发送的中文字符转换为UTF8字符集的编码然后在发送Post出去、这样就可以在其他系统里面直接获取、不用去担心乱码问题 GBK相同原理、本人不习惯gbk

    love string 超好用的字符编码查询工具

    winhook 技术,全新的编码转换功能嵌入,令到 UEStudio 之流软件也支持 多种编码查询替换方式。添加退出时效果。  -----------------------  1.6  修正一个 BUG,全面支持 WinHex,Hex WorkShop。  ------------...

Global site tag (gtag.js) - Google Analytics