java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式
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
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
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汉字 10进制,用java程序将GBK字符转成UTF-8编码格式的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 为什么有的网站要改服务器才能打开吗,为什
- 下一篇: 【OpenCV 例程200篇】97. 反