日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式

發(fā)布時(shí)間:2025/3/15 编程问答 45 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

UTF-8 采用變長(zhǎng)度字節(jié)來(lái)表示字符,理論上最多可以到 6 個(gè)字節(jié)長(zhǎng)度(一個(gè)字符六個(gè)字節(jié))。

UTF-8 編碼兼容了 ASC II(0-127), 也就是說(shuō) UTF-8 對(duì)于 ASC II 字符的編碼是和 ASC II 一樣的。

對(duì)于超過(guò)一個(gè)字節(jié)長(zhǎng)度的字符,才用以下編碼規(guī)范:

左邊第一個(gè)字節(jié)1的個(gè)數(shù)表示這個(gè)字符編碼字節(jié)的位數(shù),

例如兩位字節(jié)字符編碼樣式為為:110xxxxx 10xxxxxx;

三位字節(jié)字符的編碼樣式為:1110xxxx 10xxxxxx 10xxxxxx.;

以此類(lèi)推,六位字節(jié)字符的編碼樣式為:1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx。

xxx 的值由字符編碼的二進(jìn)制表示的位填入。只用最短的那個(gè)足夠表達(dá)一個(gè)字符編碼的多字節(jié)串。

例如:

Unicode 字符: 00 A9(版權(quán)符號(hào)) = 1010 1001,

UTF-8 編碼為:11000010 10101001 = 0x C2 0xA9;

字符 22 60 (不等于符號(hào)) = 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();

//補(bǔ)零

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)

總結(jié)

以上是生活随笔為你收集整理的java gbk汉字 10进制,用java程序将GBK字符转成UTF-8编码格式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。