- 10.1.10.1 ucs2文字セット(UCS-2 Unicodeエンコディング)
- 10.1.10.2 utf16文字セット(UTF-16 Unicodeエンコディング)
- 10.1.10.3 utf16le文字セット(UTF-16LE Unicodeエンコーディング)
- 10.1.10.4 utf32文字セット(UTF-32 Unicodeエンコディング)
- 10.1.10.5 utf8文字セット(3バイトutf - 8的Unicodeエンコーディング)
- 10.1.10.6 utf8mb3文字セット(utf8のエeconfリアス)
- 10.1.10.7 utf8mb4文字セット(4バイトのutf - 8的Unicodeエンコーディング)
Unicodeサポートの(MySQL 4.1での)初期実装には,Unicodeデータを格納するための次の2つの文字セットが含まれていました。
ucs2
。文字ごとに16ビットを使用するUnicode文字セットのUCS-2エンコ。use utf8
。文字ごとに1から3バイトを使用するUnicode文字セットのutf - 8エンコーディング。
これらの2つの文字セットは,Unicodeバージョン3.0の基本语言平面(BMP)の文字をサポートします。BMP文字には次の3の特性があります.使用实例
これらのコド値は0から65535(または
U + 0000
..U +飞行符
です。これらは,
ucs2
と同様に,16ビット固定の単語でエンコドできます。これらは,
use utf8
と同様に,8,16,または24ビットでエンコドできます。主要言語のほとんどすべての文字には,これらで十分です。
前述の文字セットではサポトされていない文字には,bmpの範囲外にある補助文字が含まれます。BMPの範囲外の文字は,替换字符と見なされ,Unicode文字セットへの変換時に,“?”
に変換されます。
MySQL 5.6でのUnicodeのサポートには補助文字が含まれるので,範囲がより広いため,より多くのスペースを占める新しい文字セットが必要になります。次の表では,以前のUnicodeサポートと現在のUnicodeサポートの機能を簡単に比較しています。
MySQL 5.5より前 | MySQL 5.5以降 |
---|---|
すべてのUnicode 3.0文字 | すべてのUnicode 5.0および6.0文字 |
補助文字なし | 補助文字あり |
ucs2 文字セット,bmpのみ |
変更なし |
3バトまでのuse utf8 文字セット,bmpのみ |
変更なし |
4バトまでの新しいutf8mb4 文字セット,bmpまたは補助 |
|
新しいutf16 文字セット,bmpまたは補助 |
|
新しいutf16le 文字セット,bmpまたは補助(5.6.1以降) |
|
新しいutf32 文字セット,bmpまたは補助 |
これらの変更には上位互換性があります。新しい文字セットを使用する場合、アプリケーションの非互換性の問題が生じる可能性があります。セクション10.1.11”以前のUnicodeサポートから現在のUnicodeサポートへのアップグレード”を参照してください。さらにこのセクションでは,use utf8
から(4バe @ e @トの)utf8mb4
文字セットに変換する方法と,そのときに適用される可能性がある制約にいて説明します。
MySQL 5.6は,次のUnicode文字セットをサポトします。
ucs2
。文字ごとに16ビットを使用するUnicode文字セットのUCS-2エンコ。utf16
。Unicode文字セットのUTF-16エンコディング。ucs2
に似ていますが,補助文字用の拡張機能があります。utf16le
。Unicode文字セットのUTF-16LEエンコディング。utf16
と似ていますが,ビッグエンディアンではなくリトルエンディアンです。utf32
。文字ごとに32ビットを使用したUnicode文字セットのUTF-32エンコ。use utf8
。文字ごとに1から3バイトを使用するUnicode文字セットのutf - 8エンコーディング。utf8mb4
。文字ごとに1から4バイトを使用したUnicode文字セットのutf - 8エンコーディング。
ucs2
およびuse utf8
はBMP文字をサポトします.使用实例utf8mb4
、utf16
、utf16le
,およびutf32
は,bmpおよび補助文字をサポトします。
類似した一連の照合順序を,ほとんどのUnicode文字セットで使用できます。たとえば,それぞれにはデンマ,ク語の照合順序があり,その名前はucs2_danish_ci
、utf16_danish_ci
、utf32_danish_ci
、utf8_danish_ci
,およびutf8mb4_danish_ci
です。例外はutf16le
であり,2 .の照合順序しかありません。セクション10.1.14.1 " Unicode文字セット"にはすべてのUnicode照合順序が一覧表示されており,補助文字の照合順序プロパティーについても説明しています。
多くの補助文字は東アジアの言語のものですが,MySQL 5.6で追加するサポートは,Unicode文字セットでのより多くの日本語と中国語の文字に対するサポートであり,新しい日本語および中国語の文字セットのサポートではありません。
ucs - 2, utf - 16,およびutf - 32のMySQLでの実装は,ビッグエンディアンのバイト順で文字を格納し,値の先頭にバイト順マーク(BOM)を使用しません。ほかのデータベースシステムでは,リトルエンディアンのバイト順またはBOMを使用していることもあります。このような場合,これらのシステムとMySQLの間でデータを転送するときに,値の変換を実行する必要があります。Utf-16leの実装はリトルエンディアンです。
MySQLはUTF-8値にBOMを使用しません。
Unicodeを使用したサバと通信する必要があるクラアントアプリケションは,たとえば设置名称“use utf8”
ステトメントを発行することによって,クラアント文字セットをそれに従って設定する必要があります。ucs2
、utf16
、utf16le
,およびutf32
は、クラ以及アント文字セットとして使用できません。まり,これらは组名称
または设置字符集
で機能しません。(セクション10.1.4 "接続文字セットおよび照合順序"を参照してください。)
以降のセクションでは,MySQLにおけるUnicode文字セットについてさらに詳しく説明します。