更多信息請(qǐng)?jiān)L問(wèn):考試吧計(jì)算機(jī)類論
大家都知道,一個(gè)漢字等于兩個(gè)byte的大小。二進(jìn)制數(shù)據(jù)通過(guò)網(wǎng)絡(luò)傳輸時(shí),如果兩個(gè)byte都超過(guò)128則會(huì)合并成一個(gè)Unicode(漢字)字符,本文的代碼主要實(shí)現(xiàn)的功能是:把這些漢字拆分為byte,然后重新變?yōu)锳SCII類型的字符串。
1. public static String ChineseToASCII(byte[] rec) { //從字節(jié)讀取內(nèi)容
2. ByteArrayInputStream bais = new ByteArrayInputStream(rec);
3. DataInputStream dis = new DataInputStream(bais);
4. String BTS=null;
5. try {
6. BTS=new String(rec,"ISO8859-1");//轉(zhuǎn)換編碼
7. bais.close();
8. dis.close();
9. } catch (Exception e) {
10. e.printStackTrace();
11. }
12. return BTS;
13. }
14.
15. /**
16. * @param args the command line arguments
17. */
18. public static void main(String[] args) {
19. String source="一二三四五六七八九十";
20. System.out.println(source.length());
21.
22. String target=ChineseToASCII(source.getBytes());
23. System.out.println(target);
24. System.out.println(target.length());
25.
26. }
結(jié)果是:
compile:
run:
10
???????????ù??°????? ASCII字符如果超過(guò)128,則會(huì)顯示為?,但是其本身的值不變
20
BUILD SUCCESSFUL (total time: 1 second)
北京 | 天津 | 上海 | 江蘇 | 山東 |
安徽 | 浙江 | 江西 | 福建 | 深圳 |
廣東 | 河北 | 湖南 | 廣西 | 河南 |
海南 | 湖北 | 四川 | 重慶 | 云南 |
貴州 | 西藏 | 新疆 | 陜西 | 山西 |
寧夏 | 甘肅 | 青海 | 遼寧 | 吉林 |
黑龍江 | 內(nèi)蒙古 |