字元編碼轉換概要設計

2021-06-20 05:48:41 字數 1834 閱讀 1600

字元編碼轉換概要設計

本文主要討論unicode、gbk和utf8的轉換。

unicode(中文

:萬國碼、國際碼、統一碼、單一碼)是電腦科學

領域裡的一項業界標準,是國際組織

制定的可以容納世界上所有文字和符號的字元編碼方案。unicode用數字0-0x10ffff來對映這些字元,最多可以容納1114112個字元,或者說有1114112個碼位。碼位就是可以分配給字元的數字。

在字元編碼轉換中一般先源編碼轉換為unicode編碼,在將unicode編碼轉換為目標編碼。所以在編碼轉換前需要知道源字元轉換為unicode編碼的規則,unicode編碼轉換為目標字元的規則。

詳細請參考:

gbk編碼,是在gb2312-80

標準基礎上的內碼

擴充套件規範,使用了雙位元組

編碼方案,其編碼範圍從8140至fefe(剔除xx7f),共23940個碼位,共收錄了21003個漢字,完全相容gb2312-80標準,支援國際標準iso/iec10646-1和國家標準gb13000-1中的全部中日韓漢字,幷包含了big5編碼中的所有漢字。

雖然gbk編碼可以一一對映到unicode編碼上,但沒有乙個固定的規則,所以一般gbk與unicode的轉換通過查表實現。

詳細請參考:

utf-8編碼是unicode的一種實現方式,其所承載的內容本質上還是unicode,所以其轉換方式上有乙個固定的規則。具體如下:

如果unicode字元

由2個位元組

表示,則編碼成utf-8很可能需要3個位元組

。而如果unicode字元

由4個位元組表示,則編碼成utf-8可能需要6個位元組。用4個或6個位元組

去編碼乙個unicode字元

可能太多了,但很少會遇到那樣的unicode字元。

實際表示ascii字元

的unicode字元,將會編碼成1個位元組

,並且utf-8表示與ascii字元表示是一樣的。所有其他的unicode字元

轉化成utf-8將需要至少2個位元組

。每個位元組

由乙個換碼序列

開始。第乙個位元組

由唯一的換碼序列

,由n位連續的1加一位0組成, 首位元組連續的1的個數表示字元編碼

所需的位元組數。unicode轉換為utf-8時,可以將unicode二進位制從低位往高位取出二進位制數字,每次取6位,如上述的二進位制就可以分別取出為如下示例所示的格式,前面按格式填補,不足8位用0填補。

詳細請參考:

根據概述中的規則,我們設計的模組如下:

底層為具體編碼層:實現具體編碼與unicode的轉換。

中間為編碼控制層:實現組織各編碼的轉換。

頂層為對外介面層:外部直接呼叫介面實現字元轉換。

a.    版本資訊介面

b.    建立例項介面(主要用於物件導向的思想)

c.     釋放例項介面

d.    設定例項的源編碼和目標編碼方式

e.     編碼轉換

f.      與例項無關的編碼轉換

g.    判斷當前的編碼方式

具體定義參考:codetransformation.h

a.    獲取版本資訊介面

b.    將字元轉換為unicode

c.     將unicode轉換為目標字元編碼

d.    判斷是否為當前庫的編碼方式

具體定義參考:codetransformation.h

字元編碼轉換

這幾天在做個東西,就是關於網路字元編碼轉換的問題,此前這方面一點兒也不懂,頭要的急所以從快入手,先上網了解了一下字元編碼到底是什麼東西,於是知道了內碼轉換,gb2312,big5,unicode等東西,不懂的可以從網上搜搜,我也是搜的,建議大家先看看這個 http www.vckbase.com d...

php字元編碼轉換

iconv convert string to requested character encoding php 4 4.0.5,php 5 mb convert encoding convert character encoding php 4 4.0.6,php 5 用法 string mb c...

字元編碼及其轉換

1.ascii 單字儲存 ascii碼使用單字儲存,即8位儲存,所以最多只能編碼256個字元,主要為西文服務。ascii碼劃分為兩個集合 128個字元的標準ascii碼和附加的128個字元的擴充ascii碼。2.ansi 單字儲存,也可以理解為單雙字混存 ansi是ascii字符集的擴充,在儲存as...