黑馬程序員-第二十三天(字符編碼)

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

第二十三天(字符編碼)
一,轉入編碼表的流對象
InputStreamReader
OutputStreamWriter
PrintWriter
PrintStream


二,編碼表的由來 
計算機只能識別二進制數據,早期由來是電信號。爲了方便應用計算機,讓它可以識別各個國家的文字。就將各個國家的文字用數字來表示,並一一對應,形成一張表


三,常見編碼表:
ASCII:美國標準信息交換碼。用一個字節的7位可以表示。
ISO8859-1:拉丁碼錶。歐洲碼錶。用一個字節8位表示
GB2312:中國的中文編碼表。,ANSI 編碼代表 GB2312 編碼
GBK:中國的中文編碼表升級。融合民更多的中文文字符號。兩個字節表示一個漢字(最高位是-1)  兼容ASCII
Unicode:國際標準碼,融合了多種文字。所有文件都用兩個字節來表示,java語言使用的就是unicode
UTF-8:最多用三個字節來表示一個字符(都會加標識頭)

三, 編碼和解碼


編碼:
字符串變成字節數組  String -》byte[] :str.getBytes()(系統默認編碼表gbk); str.getBytes(Charset charset)按照指定的字符集進行轉換 
解碼:               
字節數組變成字符串  byte[] —》String:new String(byte[])(系統默認編碼表gbk); new String(byte[] ,Charset charset) 按照指定的字符集進行轉換


Tomcat服務器默認以iso8859-1編碼
注:當數據以GBK編碼寫入一個文件時,用iso8859-1解碼時會出現亂碼,,這時在用iso8859-1進行編碼,然後在用gbk解碼,,還 是原來的數據。如果
iso8859-1換成utf-8,,也會出現亂碼,,因爲它們都識別中文。


四。聯通無法顯示
當聯通以gbk編碼以utf解碼出現的現象:以gbk編碼的二進行行式符合utf-8的標頭讀兩個字節去查表的規律
utf-8 標實頭:
當字節以  0  開頭時  就會讀取一個字節進行查表
當第一個字以 110 開頭,第二個字節以 10 開頭時  就會讀二個字節進行查表
當第一個字節以 1110 開頭,第二個字節以 10 開頭, 第三個字節以 10 開頭時,就會讀取三個字節進行查表


而“聯通” 以gbk 編碼的二進行表現形式爲: 11000001
                    10101010                                                                                                               11001101
     10101000
符合utf-8以兩個字節爲一個字符進行查表的規律,所以記事本會無法顯示

---------------------- ASP.Net+Unity開發.Net培訓、期待與您交流! ----------------------

發佈了48 篇原創文章 · 獲贊 0 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章