中文亂碼的本質

平時我們開發中傳輸的數據用的最多的是String,我們在使用時往往new String(),沒有人去關注的存儲編碼,亂碼問題的本質就是由於不同編碼的字節(byte)轉化時無法正確轉化

 

String 是具有編碼格式的,

     

  1. String 類可以按照編碼格式存儲byte(字節)在磁盤中,不同的編碼格式存儲到磁盤中的字節(byte)是不同的,
  2. 磁盤中的字節(byte)與String 相互轉化過程中如果採用的編碼不一樣很可能出現亂碼的

 

我們在創建新對象時,new String() ,是有默認編碼的,調用了java.nio.charset.Charset.defaultCharset() 方法,二者default 值可以通過及方式設置

所以我們在new String()時要注意編碼問題,如果在一個系統中是沒有問題的,但多個系統中可能會出現中文亂碼的問題,亂碼大多數都是轉碼過程中出現了問題,

是可以轉碼解決的

new String(str1.getByte("srcCharSet"),"desCharSet") 將srcCharSet存儲的字節(byte)轉化爲desCharSet存儲的字節

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