字符集系列三之ISO8859_1、GBK、gb2312

這裏有一段程序:

String a = new String("");

String b = new String(a.getByte(),"ISO8859_1");

String c = new String(a.getByte(),"gb2312");

System.out.println("b="+b+" c="+c);

String b = new String(b.getByte("ISO8859_1"),"GBK");

String c = new String(a.getByte("gb2312"),"GBK");

System.out.println("b="+b+" c="+c);

 

虛擬機的內碼是GBK:

輸出結果是:

b=?? c=??

b=碁 c=??

這就是奇妙之處了。

當a被轉化爲gb2312時由於在編碼表裏找不到對應的編碼,故而被替代爲?的編碼,再轉回來就是?了

而被轉化爲ISO8859_1時,之間將編碼平移過去雖然不能正常顯示,但是保證了正常轉化回來。

ISO8859_1是個比較特殊的字符集,它是一個8位的編碼,這就讓他成爲一個非常好的中介機構,會忠實的將每個字節的數據記錄下來而不改變,估計這是web傳輸和jdbc傳輸使用它爲字符集的原因吧。



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=321285 

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