JAVA基礎——字元編碼

來源:互聯網
上載者:User

標籤:編碼   字元   

                           字元編碼   

一、概述
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基礎——字元編碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.