在项目中经常遇到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;
}
分享到:
相关推荐
当把别人的项目导入AndroidStudi中会经常发现编码错误,乱码等不可能一个一个去修改,只要你吧代码复制到eclise使用他就可以实现你想要的转码
idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...
在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码
基于MFC CString的GBK与UTF-8编码转换,在网上找到一些代码都有问题,但都存在一些错误。现在改好了,与大家分享一下。 (MFC 非UNICODE)
iso-8859-1转GBK,GBK转iso-8859-1,在二维码生成过程中如果没有用UTF8编码可以使用编码转换方式解决乱码问题
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8
PB的utf-8转换,包括加码解码等等 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
乱码的原因是编码方式不同,小程序显示的是utf-8编码,而蓝牙设备发送的是gb2312编码。 解决 按gbk对照表查出对应的utf-8编码 // 导入gbk转utf-8对照表 import Decoder from "../../utils/Decoder.js" 参考地址:...
STM32 MDK utf8 gbk编码转换;keil默认gbk编码,而网络传输默认utf8,遇到中文就会乱码
前端页面通过ajax发送请求,参数都是默认使用utf-8编码格式对参数进行url编码,这样的后果就是,当后台页面如果使用gbk编码的话,会出现乱码的情况,然后网上找到一个大神写的gbk.js. 但是里面没有做出详细介绍,这里...
用于常用编码转换,包括BREW、JAVA等语言UNICODE字符串定义格式,网页编码,GBK及UTF-8的URL编码等
自制软件,文本批量格式转换,将ansi(即gbk)与utf-8相互转换,自己编写用来在浏览器上读txt小说时,避免乱码用的,共享出来方便大家使用,支持gbk和utf-8。
乱码 编码方式解决 gbk ISO8859-1 utf8 编码 乱码 编码方式解决 gbk ISO8859-1 utf8 编码
在开发的时候经常碰到这样的情况,需要将原本编码格式为GBK的工程改成UTF-8来编码,设置之后,注释全都乱码了,一个一个改太麻烦,有了这个工具只用运行一下main方法,一键搞定 ps:如果是UTF-8转GBK,或是其他编码...
eclipse下批量转java GBK编码文件到UTF-8,java类,非可执行文件,在eclipse下运行即可
跨平台(windows Linux)是纯c实现 gbk/utf8互转,Ansi/Utf8互转,
基于Keil的用C语言写的UTF转GBK的代码,用的查表法,字库占用41K左右Flash,可以用于将数据流中的UTF文本转化为GBK,解决串口显示或者TF或LCD显示中文乱码的问题
可以帮助你把中文转换成UTF-8编码形式,UTF-8编码与中文互转,同时也支持把UTF-8编码过的字符还原成中文,将字符串转换为UTF-8形式,解决在网络传输过程中出现的字符乱码,同时可跨平台使用。
方便开发者的工程项目编码格式转换,并且转码后不会出现中英文乱码。