標籤:編碼 字元
字元編碼
一、概述
InputStreamReader
OutputStreamWriter
字元轉換流是字元流與位元組流轉換的橋樑,同時加入了編碼轉換。
二、編碼錶的由來
電腦只能識別位元據,早期由來是電訊號;
為了方便應用電腦,識別各個國家的文字;
就將各個國家的文字用數字來表示,並一一對應,形成一張表,這就是編碼錶。
三、常見的編碼錶
注意:
1、Java語言char類型使用的是Unicode
2、UTF-8每一個位元組的開頭都加有標識頭,加完後很容易區分。UTF-8中漢字用3個位元組表示。
3、中文碼錶相容ASCII碼錶(中文中有拼音)。
四、轉換流的編碼應用
1、可以將字元以指定編碼格式儲存。
2、可以對文本資料指定編碼格式來解決。
3、指定編碼的動作由建構函式完成,構造方法如下:
InputStreamReader(InputStream in, String charsetName) 建立使用指定字元集的 InputStreamReaderOutputStreamWriter(OutputStream out, String charsetName) 建立使用指定字元集的 OutputStreamWriter
五、編碼與解碼
1、定義
編碼:String→byte[] —-> byte[] getBytes(Charset)
解碼: byte[]→String—->String(byte[],charsetName)
String(byte[], int offset, int length,charsetName)
2.圖解
注意:
1)如果編碼編錯了,就無法再解碼了。2)之所以可以再解碼是因為ISO8859-1不識別中文,解碼的時候保持了資料的原樣性。如果開始使用UTF-8解碼,由於UTF-8支援中文,解碼之後資料就發生了變化,不再是原有資料。3)Tomcat伺服器預設編碼就是ISO8859-1,當Tomcat伺服器出現亂碼時,可以再解碼還原資料。4)用記事本開啟檔案是解碼,因為電腦中的資料都是二進位檔案。
3.“聯通”現象:在記事本中存入聯通,再次開啟出現亂碼
現象解釋:
UTF-8有自己的標識頭,如下:
聯通的位元:
**110**00001
**10**101010
11001101
10101000
剛好“聯通”的二進位代碼剛好滿足UTF-8的標示,再次開啟記事本時,其就按UTF-8解碼所以造成亂碼。
JAVA基礎——字元編碼