top
Loading...
10.10.7.1.cp932字符集
10.10.7.1. cp932字符集

為什么需要cp932

MySQL中,sjis字符集對應于由IANA定義的Shift_JIS字符集,它支持JIS X0201JIS X0208字符。(見 http://www.iana.org/assignments/character-sets。)

但是,“SHIFT JIS”作為描述性術語的含義變得非常含糊不清,并且它常常包括由不同供應商定義的Shift_JIS擴展部分。

例如,使用在日本Windows環境中使用的“SHIFT JIS”是MicrosoftShift_JISMicrosoft擴展,它的準確名字是Microsoft Windows Codepage: 932cp932除由Shift_JIS支持的字符之外,cp932支持擴展字符,如NEC選擇的IBM擴展字符和IBM擴展字符。

許多日本用戶在使用這些擴展字符過程中碰到過一些問題。這些問題是由于以下情況引起的:

·         MySQL自動轉換字符集。

·         字符集通過Unicode轉換(ucs2)。

·         sjis字符集不支持這些擴展字符轉換。

·         從號稱“SHIFT JIS”到Unicode的轉換,存在一些轉換規則,并且一些字符轉換到Unicode依賴不同的轉換規則。MySQL僅支持這些轉換規則中的一種(在后面描述)。

MySQLcp932字符集可以解決這些轉換問題。

因為MySQL支持字符集轉換,將IANA Shift_JIS cp932分離為兩種不同字符集是重要的,因為它們提供不同的轉換規則。

cp932sjis有什么不同?

cp932字符集與sjis存在以下不同點:

·         cp932支持NEC特殊字符、NEC選擇的IBM擴展字符和IBM選擇的字符。

·         一些cp932字符有兩個不同的編碼點,這兩種編碼點轉換為相同Unicode編碼點。因此,當從Unicode轉換回到cp932時,必須選擇一個編碼點。對于這種“相互轉換使用由Microsoft推薦的轉換規則。(見 http//support.microsoft.com/kb/170559/EN-US/。)

轉換規則如下:

o        如果字符在JIS X 0208 NEC特殊字符中同時存在,使用JIS X 0208 的編碼點。

o        如果字符在NEC特殊字符和IBM選擇的字符中同時存在,使用NEC特殊字符的編碼點。

o        如果字符在IBM選擇的字符和NEC選擇的IBM擴展字符中同時存在,使用IBM擴展字符的編碼點。

關于cp932字符的Unicode 值的列表顯示信息見http://www.microsoft.com/globaldev/reference/dbcs/932.htm。對于cp932表中的帶有下面有四位數字出現的字符的實體,數字代表相應的Unicodeucs2)編碼。對于表中有兩個帶下劃線的數字出現的實體,擇有一個以那兩個數字開頭的cp932字符值的范圍。點擊一個這種表的實體,將帶你到一個頁,該頁顯示每個以那些數字開頭的cp932字符的Unicode值。

以下連接很重要。它們與下列字符集的編碼相對應:

o        NEC特殊字符:

http://www.microsoft.com/globaldev/reference/dbcs/932/932_87.htm

o        NEC選擇的IBM擴展字符:

o                     http://www.microsoft.com/globaldev/reference/dbcs/932/932_ED.htm
o                     http://www.microsoft.com/globaldev/reference/dbcs/932/932_EE.htm

o        IBM選擇的字符:

o                     http://www.microsoft.com/globaldev/reference/dbcs/932/932_FA.htm
o                     http://www.microsoft.com/globaldev/reference/dbcs/932/932_FB.htm
o                     http://www.microsoft.com/globaldev/reference/dbcs/932/932_FC.htm

·         cp932eucjpms結合支持用戶自定義字符的轉換,并且解決sjis/ujis轉換問題。詳細信息,請參見http://www.opengroup.or.jp/jvc/cde/sjis-euc-e.html

·         對于一些字符,與ucs2之間的轉換與sjiscp932之間的轉換是不同的。下表舉例說明了這些不同。

轉換到ucs2

sjis/cp932

sjis ucs2轉換

cp932 ucs2轉換

5C

005C

005C

7E

007E

007E

815C

2015

2015

815F

005C

FF3C

8160

301C

FF5E

8161

2016

2225

817C

2212

FF0D

8191

00a2

FFE0

8192

00a3

FFE1

81Ca

00aC

FFE2

ucs2轉換:

ucs2

ucs2 sjis轉換

ucs2 cp932轉換

005C

815F

5C

007E

7E

7E

00a2

8191

3F

00a3

8192

3F

00aC

81Ca

3F

2015

815C

815C

2016

8161

3F

2212

817C

3F

2225

3F

8161

301C

8160

3F

FF0D

3F

817C

FF3C

3F

815F

FF5E

3F

8160

FFE0

3F

8191

FFE1

3F

8192

FFE2

3F

81Ca

作者:mysql.com
來源:http://dev.mysql.com/doc/refman/5.1/zh/charset.html
北斗有巢氏 有巢氏北斗