MySQL 5.1Unicode データを保存するために次の二つのキャラクタセットが用意されています
ucs2
( the UCS-2
Unicode キャラクタセット)
utf8
(Unicode キャラクタセットのUTF-8 エンコード)
UCS-2(Unicode のバイナリ表現)では、各文字は 2
バイトの Unicode
と最上位のバイトで最初に表現されます。例:LATIN
CAPITAL LETTER A
はコード0x0041
で、2バイトシーケンスで保存されます。0x00
0x41
。CYRILLIC SMALL LETTER YERU
(Unicode0x044B
)
は2バイトシーケンスとして保存されます。0x00
0x41
。Unicode
文字および対応するコードについては、Unicode
Home Pageを参照してください。
現在、UCS-2はクライアントキャラクタセットとして使用ができません。これはSET
NAMES
'ucs2'
が使用できないことを意味します。
UTF-UTF8 キャラクタセット(Unicode 表現の変換)は、Unicode データを保存する別の方法です。RFC3629 に基づき実装されています。さまざまな Unicode 文字を長さの異なるバイトシーケンスに適合させることが、UTF8 キャラクタセットの概念です。
基本的なラテン文字、数字、句読点は 1 バイトを使用します。
ヨーロッパおよび中東のスクリプト文字の多くは、2 バイトシーケンスに適合します。拡張ラテン文字(チルダ、長音、鋭アクセント、抑音アクセントその他のアクセント付き)、キリル文字、ギリシア文字、アルメニア文字、ヘブライ文字、アラビア文字、シリア文字その他。
韓国語、中国語、日本語の表意文字は、3 バイトシーケンスを使用します。
RFC 3629 は1から4バイトまでのエンコードシーケンスを示します。現在、MySQLではUTF-8に対して4バイトシーケンスのサポートは含みません。(UTF-8 エンコードの旧標準はRFC 2279で提供されています。これは1から6バイトのUTF-8シーケンスを示しています。RFC 3629 はRFC 2279 を無効にします。このため、5と6バイトのシーケンスはすでに使用されていません。
ヒント:スペースを UTF8
で保存するには、VARCHAR
ではなく
CHAR
を使用してください。そのようにしないと、MySQL
では CHAR CHARACTER SET
utf8
カラムに対して
3バイトを確保しなければなりません。これは、使用可能な最大長が
3バイトであるためです。
たとえば、MySQLはCHAR(10) CHARACTER SET
utf8
カラムに対して30バイトを確保しなければなりません。