java 編碼,亂碼,字元系列(1)

2021-08-25 07:59:06 字數 1607 閱讀 1563

類編碼介紹

常用的編碼方式一覽:

注意 :

character類,character 類在物件中包裝乙個基本型別 char 的值。character 型別的物件包含型別為 char 的單個字段。char 資料型別(和 character 物件封裝的值)基於原始的 unicode 規範 ,將字元定義為固定寬度的 16 位實體。unicode 標準曾做過修改,以允許那些其表示形式需要超過 16 位的字元,合法**點 的範圍現在是從 u+0000 到 u+10ffff,即通常所說的 unicode 標量值 。(也就是上面介紹的unicode,原始unicode將在下面給出定義。)在character的isletter 方法中對於引數 是char 的方法是不支援對擴充套件字元的判斷 而引數是int時 時支援對擴充套件字元的判斷。

基於上面的介紹所以有:char值表示 basic multilingual plane (bmp) **點,其中包括**項**點,或 utf-16 編碼的**單元。int值表示所有 unicode **點,包括增補**點。

可以用下面方法檢測:

character.issupplementarycodepoint(int codepoint)確定指定字元(unicode **點)是否在增補字元範圍內。

原始unicode規範:unicode用乙個 2 位元組數字表示每個字元,從 0 到 65535 。每個  2  位元組數字表示至少在一種世界語言中使用的乙個唯一字元。(在多種語言中都使用的字元具有相同的數字碼。)這樣就確保每個字元乙個數字,並且每個數字乙個字 符。 unicode 資料永遠不會模稜兩可。 unicode 使用相同的數字表示 ascii 和 iso-8859-1 中的字元。只是這兩種編碼用乙個位元組表示, 而 unicode 用兩個位元組表示。所以 unicode 表示這兩種編碼的字元時只要用低位元組就可以了,高位元組為 0 。

一些疑惑解釋:

utf-8、utf-16、utf-32都是將數字轉換到程式資料的編碼方案,他們之間有什麼區別?

解釋: 用記事本建立乙個文字檔案,輸入漢字「 中 」 分別儲存為 unicode 格式和 utf-8 格式。 將 ultraedit 的自動識別 utf-8 檔案格式選項禁止,然後用其開啟這兩個檔案,選用二進位制檢視方式,可以看到 :

utf-8格式檔案編碼為 「ef bb bf e4 b8 ad」 。其中有個三位元組的字首 「ef bb bf」 ,這是 utf-8 格式文字檔案的標識。不過這個字首不要,某些文字檢視軟體也可以通過編碼判斷出 utf-8 格式。 「e4 b8 ad」 就是 「 中 」 的 utf-8 編碼。

unicode格式的檔案的完整編碼是 「ff fe 2d 4e」 。前面有個雙位元組字首 「ff fe」 ,這是 unicode 格式文字文件的編碼標識。而我們看到的編碼是 「2d 4e」 ,而不是如我前面所說的 「4e 2d」 ,為什麼呢?因為數字是按照低位元組在先高位元組在後的順序儲存的,所以實際的 unicode 編碼恰恰是 「4e2d」。

具體編碼方式,以及各種編碼方式之間的細微區別不再介紹,可以參看:

接下來將會介紹中 編碼 的處理方式。

字元編碼 字元編碼的奧秘

字元編碼相信是每個程式設計師的噩夢,只要是有中文的地方,總是會遇到各種編碼的問題,並且這種問題還非常難纏,尤其在linux上,因為上面很多軟體都是針對 英語國家開發的,是不會考慮其他語種編碼問題。在遇到編碼的無數大坑之後,我決定仔細研究下編碼問題,因為這就像一道坎一直橫在你面前,每次到這裡你都會 跌...

80 20 010 原理 字元編碼 字元編碼

ascii american standard code for information interchange,美國資訊交換棕準代礙 7 bit來表示 個字元,共汁可以表示128神字元。is08859 1 b bit表示 個字元,即用乙個字苓 byte 8 bit 來表示 個字元,共汁可以表示25...

編碼字符集

gb2312 全稱中國標準第兩千三百一十二條,其中包含亞裔字符集 南韓文字 缺點不包括正體中文,但是台灣還在使用正體中文,於是就有了 gbk gbk 全稱中國標準第兩千三百一十二條擴充套件版本,就包含正體中文 unicode 全稱萬國碼,各個國家的文字都有 utf 8 最通用的,unicode的公升...