`

解决gbk编码转UTF-8编码中文乱码问题

阅读更多
       在项目中经常遇到gbk转UTF-8中文乱码问题。网上也有一些代码,但对中文加其它非中文字符情况不支持。下面是自己修改之后的代码,还比较好用.

//chenese为gbk中文
    public byte[] gbk2utf8(String chenese) {
char c[] = chenese.toCharArray();
byte[] fullByte = new byte[3 * c.length];
int index =0;
for (int i = 0; i < c.length; i++) {
int m = (int) c[i];
if(m>0&&m<255){  //判断是否是中文
fullByte[index]= (byte)c[i];
index++;
continue;
}
                            //如果是中文字符则补齐一个字节
                                //gbk一个字对应两个字节而UTF-8一个字对应三个字节
String word = Integer.toBinaryString(m);
// System.out.println(word);

StringBuffer sb = new StringBuffer();
int len = 16 - word.length();

for (int j = 0; j < len; j++) {
sb.append("0");
}
sb.append(word);
sb.insert(0, "1110");
sb.insert(8, "10");
sb.insert(16, "10");

System.out.println(sb.toString());

String s1 = sb.substring(0,;
String s2 = sb.substring(8, 16);
String s3 = sb.substring(16);

byte b0 = Integer.valueOf(s1, 2).byteValue();
byte b1 = Integer.valueOf(s2, 2).byteValue();
byte b2 = Integer.valueOf(s3, 2).byteValue();
byte[] bf = new byte[3];
bf[0] = b0;
fullByte[index] = bf[0];
bf[1] = b1;
fullByte[index+ 1] = bf[1];
bf[2] = b2;
fullByte[index + 2] = bf[2];
index=index+3;
    }
byte[] result =new byte[index];
System.arraycopy(fullByte, 0, result, 0, index);
return result;
}
分享到:
评论

相关推荐

    Eclipse项目的GBK编码转为UTF-8插件

    当开发者将一个原本使用GBK编码的Eclipse项目导入到Android Studio时,由于Android Studio默认使用的是UTF-8编码,可能会遇到编码不匹配的问题,导致代码显示乱码或编译错误。解决这个问题通常需要手动逐个文件转换...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_

    用户可以通过输入UTF-8编码的字符串,然后通过这个VI得到GBK编码的结果,以便在需要GBK编码的环境中使用。 LabVIEW的"转换编码"函数通常需要指定源编码和目标编码,对于这个特定的案例,源编码应该是UTF-8,目标...

    C#写的 GBK GB2312 UTF-8转换

    在这个例子中,`Encoding.GetEncoding("GBK")`获取了GBK编码器,`GetBytes()`方法将GBK编码的字符串转换为字节数组,然后`Encoding.UTF8.GetString()`将这个字节数组还原为UTF-8编码的字符串。 对于文件的编码转换...

    c gbk和 utf-8 转换

    - Unicode码点转换为UTF-8的过程相对复杂,因为UTF-8编码是变长的,根据Unicode码点的大小,可能会占用1到4个字节。 - 对于小于128的码点(ASCII字符),直接用单字节表示,最高位为0。 - 对于大于127的码点,...

    UTF-8toGBK_labview编码gbk_LabVIEWUTF-8_utf-8toGbk_源码.zip

    例如,如果你需要从一个使用GBK编码的系统获取数据,而你的程序默认使用UTF-8编码,那么就需要进行这样的转换,以避免乱码问题。反之,如果你的数据需要发送给使用GBK编码的系统,你也需要做相应的转换。 总之,这...

    批量转 GBK 转 UTF-8 gb2312 Iso-8959-1 转 UTF-8

    在标题和描述中提到的“批量转 GBK 转 UTF-8”、“gb2312 转 UTF-8”以及“Iso-8859-1 转 UTF-8”是指将使用这些编码格式的文件转换成UTF-8编码。这是因为UTF-8具有广泛的兼容性和通用性,许多系统和软件默认使用UTF...

    GBK与UTF-8转码(C++)

    UTF-8编码最大的优点在于兼容ASCII,并且对于英文等拉丁语系的文字占用较少空间,因此被广泛应用于互联网传输和存储中。 #### 转换原理 在Windows操作系统中,通常使用`MultiByteToWideChar`和`...

    DELPHI 10.3编码转换 iso-8859-1转GBK,GBK转iso-8859-1

    解决乱码问题的方法是确保在生成二维码前将数据转换为统一的编码格式,如`UTF-8`。如果数据源是`ISO-8859-1`,可以先将其转换为`GBK`,然后再转换为`UTF-8`,反之亦然。这样,即使二维码生成器默认使用`UTF-8`,也能...

    eclispe GBK转UTF-8乱码解决

    然而,编码格式的问题时常困扰着开发者,尤其是当项目中存在GBK编码和UTF-8编码混用的情况,可能会导致乱码问题。本文将详细讨论如何在Eclipse中解决GBK转UTF-8乱码的问题,以及介绍一种插件工具来帮助统一编码格式...

    js实现GBK编码,避免默认utf-8编码

    前端页面通过ajax发送请求,参数都是默认使用utf-8编码格式对参数进行url编码,这样的后果就是,当后台页面如果使用gbk编码的话,会出现乱码的情况,然后网上找到一个大神写的gbk.js. 但是里面没有做出详细介绍,这里...

    java文件编码GBK转utf8完美解决方案

    idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...

    批量将Java源代码文件的编码从GBK转为UTF-8

    老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8

    .java文件中GBK编码转UTF-8编码

    在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码

    STM32 MDK utf8 gbk编码转换

    在MDK或Keil中,默认的文本编辑器编码通常为GBK,这可能导致从网络接收或保存的UTF-8编码文件出现乱码。 解决这个问题的方法是编写代码进行编码转换。在提供的`gbk_utf8_unicode.c`和`gbk_utf8_unicode.h`文件中,...

    pb12 gb转utf-8

    转换“pb12 gb转utf-8”意味着你可能有一个使用PowerBuilder 12编写的程序或数据库,其中的数据是以GBK编码存储的,现在需要将这些数据转换为UTF-8编码以便在更广泛的环境中使用或与其他系统进行兼容。 这个过程...

    GBK 与 UTF-8 间编码转换

    相反,从UTF-8到GBK的转换则需要识别出UTF-8编码的字节序列,找到对应的Unicode码点,再查找这个码点在GBK编码中的对应双字节序列。 在进行编码转换时,需要注意以下几点: 1. 检查原始文件的编码格式,避免乱码...

    转码工具gbk转utf-8,支持批量

    当一个项目中既有GBK编码的文件,又有需要与UTF-8编码兼容的需求时,就会出现乱码问题。例如,GBK编码的文本在UTF-8环境下打开可能会显示为乱码,反之亦然。此时,就需要使用转码工具来解决这个问题。 "GB2UTF8.exe...

    GBK转UTF-8

    标题"GBK转UTF-8"指的是将使用GBK编码的文件或工程转换为使用UTF-8编码的过程。下面我们将深入探讨这两种编码以及转换工具的使用。 GBK编码,全称为“汉字内码扩展规范”,是中国大陆广泛使用的多字节字符集,它...

    java 编码 UTF-8、ISO-8859-1、GBK

    3. **数据库中的数据编码**:存储中文数据的数据库表和字段也需要使用兼容中文的编码,如GBK或UTF-8。 4. **Java默认编码**:Java虚拟机(JVM)的默认编码可能会影响文件读写和字符串处理。可以通过 `-Dfile....

    gbk网页模板转utf-8的绿色小工具

    6. **处理BOM头**:有些UTF-8编码的文件会带有BOM(Byte Order Mark)头,这可能导致某些旧版浏览器出现问题。如果遇到问题,可能需要去除文件的BOM头。 7. **更新编码声明**:转换后,需要更新HTML文件头部的字符...

Global site tag (gtag.js) - Google Analytics