Unicode,UTF-8,GB2312編碼的識別

在UCS編碼中有一個叫做"ZERO WIDTH NO-BREAK SPACE"的字符,它的編碼是FEFF。而FFFE在UCS中是不存在的字符,所以不應該出現在實際傳輸中。UCS規範建議我們在傳輸字節流前,先傳輸字符"ZERO WIDTH NO-BREAK SPACE"。

這樣如果接收者收到FEFF,就表明這個字節流是Big-Endian的;如果收到FFFE,就表明這個字節流是Little-Endian的。因此字符"ZERO WIDTH NO-BREAK SPACE"又被稱作BOM。

UTF-8不需要BOM來表明字節順序,但可以用BOM來表明編碼方式。字符"ZERO WIDTH NO-BREAK SPACE"的UTF-8編碼是EF BB BF(讀者可以用我們前面介紹的編碼方法驗證一下)。所以如果接收者收到以EF BB BF開頭的字節流,就知道這是UTF-8編碼了。

Unicode:FF FE

Unicode big_endian:EF FF

UTF-8: EF BB BF

GB2312是高位在前,Big_endian

下面的方式可以得到字符串內碼

char chs[]=mystr.toCharArray();
StringBuffer sb=new StringBuffer();
for(int i = 0; i < chs.length; i++){    
 sb.append(chs[i] + " = " +  (int)chs[i]+" ");                       
 }                                       
System.out.println(sb.toString());

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章