原地址:http://blog.csdn.net/wangjichen_1/archive/2006/08/04/1019830.aspx
上网查找一下 用java程序将GBK字符转成UTF-8编码格式的代码,发现全是C++
写的,而且很烦琐,
现在自己写了一个java的,以供参考。
UTF-8
编码是一种被广泛应用的编码,这种编码致力于把全球的语言纳入一个统一的编码,
目前已经将几种亚洲语言纳入。UTF 代表 UCS
Transformation Format.
UTF-8 采用变长度字节来表示字符,理论上最多可以到
6 个字节长度。
UTF-8 编码兼容了 ASC II(0-127), 也就是说
UTF-8 对于 ASC II 字符的编码是和 ASC II 一样的。
对于超过一个字节长度的字符,才用以下编码规范:
左边第一个字节1的个数表示这个字符编码字节的位数,
例如两位字节字符编码样式为为:110xxxxx
10xxxxxx;
三位字节字符的编码样式为:1110xxxx 10xxxxxx
10xxxxxx.;
以此类推,六位字节字符的编码样式为:1111110x 10xxxxxx
10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。
xxx
的值由字符编码的二进制表示的位填入。只用最短的那个足够表达一个字符编码的多字节串。
例如:
Unicode 字符: 00 A9(版权符号) = 1010
1001,
UTF-8 编码为:11000010 10101001 = 0x C2
0xA9;
字符 22 60 (不等于符号) = 0010 0010 0110
0000,
UTF-8 编码为:11100010 10001001 10100000 =
0xE2 0x89 0xA0
package com.lang.string;
public class ConverFromGBKToUTF8 {
public static void main(String[] args){
try {
ConverFromGBKToUTF8 convert = new ConverFromGBKToUTF8();
byte [] fullByte = convert.gbk2utf8(chenese);
String fullStr = new String(fullByte, "UTF-8");
System.out.println("string from GBK to UTF-8
byte: " + fullStr);
} catch (Exception e) {
e.printStackTrace();
}
}
public byte[] gbk2utf8(String chenese){
char c[] =
chenese.toCharArray();
byte [] fullByte =new byte[3*c.length];
for(int i=0; i<c.length; i++){
int m = (int)c[i];
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,
8);
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[i*3] = bf[0];
bf[1] = b1;
fullByte[i*3+1] = bf[1];
bf[2] = b2;
fullByte[i*3+2] = bf[2];
}
return fullByte;
}
}
UTF-8的编码原理和特性:
U+0000~U+007E 1 _ _ _ _ _ _ _ (7bits)
U+0080~U+07FF 1 1 0_ _ _ _ _ 1 0_ _ _ _ _ _ (11bits)
U+0800~U+FFFF 1 1 1 0 _ _ _ _ 1 0 _ _ _ _ _ _ 1 0 _ _ _ _ _ _
(16bits)
分享到:
相关推荐
Java工程编码格式由GBK转化成utf-8(编码格式互转) https://ymjin.blog.csdn.net/article/details/118769530
不需要关心接受的字符串编码是UTF_8还是GBK,还是ios-8859-1,自动转换为utf-8编码格式,无需判断字符串原有编码,用法://处理编码String newStr = GetEncode.transcode(oldStr);
本工程用于研究如何使用Java代码将GBK编码格式的工程转换为UTF-8编码格式的工程 本工程编码方式:UTF-8 本工程开发工具:MyEclipse
在eclispe的项目中,有存在项目字符集和工作空间字符集不匹配,该jar只能将项目文件中的.java结尾的文件转为utf8编码,并且源文件必须为gbk编码的,否则乱码
老项目采用GBK编码格式,而新项目采用的UTF-8编码格式,如果直接把Java源代码复制到Eclipse中所有的中文信息会出现乱码。所以写了个小的方法类,将java文件的编码格式从GBK转UTF-8
idea、Eclipse等项目导入.java文件中文乱码完美解决方案:文件夹下所有GBK编码的.java一键转为utf-8,操作方式:将GBK2UTF8.jar文件考到需要转码项目目录,在当前位置运行控制台,输入命令java -jar GBK2UTF8.jar,...
关于JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
JAVA字符编码:Unicode,ISO-8859-1,GBK,UTF-8编码及相互转换
当时在linux上写的代码,转到window下就全部是,自己写的一个小工具类,可以实现UTF-8与GBK之间相互转码。程序开发完后,指定路径,可以实现将文件的编码装换成自己想要的格式,里面有注释
用于常用编码转换,包括BREW、JAVA等语言UNICODE字符串定义格式,网页编码,GBK及UTF-8的URL编码等
可以帮助你把中文转换成UTF-8编码形式,UTF-8编码与中文互转,同时也支持把UTF-8编码过的字符还原成中文,将字符串转换为UTF-8形式,解决在网络传输过程中出现的字符乱码,同时可跨平台使用。
java读写excel包括utf8转码为可识别汉字gbk,jxl方式读取excel,生成一个新的excel
近来做项目时,将另一个项目的模块移植该项目里,发现该项目的编码格式是GBK,移植过去的.java文件里字符串、注释都出现了乱码情况。 本开发虽然知道可以将文件代码再复制一遍粘到该项目里,但是如果只有少量文件还...
软件支持UTF-8,GB,BIG5文件类型之间的转换. 大家可以试试,很不错的东东.呵呵~~
GBK用在jsp(html)页面中,限定了输出字符集编码格式,输出到客户端的字节流的字符集编码格式为GBK。即浏览器能够正确显示内容所采用的字符集编码格式必须为GBK。这一点在<%@ page language="java" contentType="text...
java程序文件字符编码转换器 JLabel labsuffix = new JLabel("指定文件的后缀"); JLabel labCharacter = new JLabel(... private static final String[] changeCharacter = {"GBK转换成UTF-8","UTF-8转换成GBK"};
在eclipse编程过程中,如果遇到乱码问题,可以讲此工程放置到workspace目录下进行转码,但是使用者需对代码中的文件路径进行相应的修改。 使用时,需将要转码的文件放到一个文件夹中,在workspace中新建一个system...
字符编码检测和转换 附件中:FileEncodeDetector.java 此文件可以检测指定文件... "UTF-8", new FilenameFilter() { public boolean accept(File dir, String name) { return name.endsWith(".java"); } });
它的类库很小,只有500K左右,利用该类库判定文本文件的代码如下(由于cpdetector的算法使用概率统计,所以结果并不是100%准确的,但是是迄今为止我见过
Android UTF-8转码实例详解 在项目中可能会遇到url中有中文的情况,这个时候我们可能需要对url进行编码 mport java.io.UnsupportedEncodingException; import java.net.... //默认环境,已是UTF-8编码 try {