1いくつかの一般的な文字セット MySQL で最も一般的な文字セットには、ASCII 文字セット、ラテン文字セット、GB2312 文字セット、GBK 文字セット、UTF8 文字セットなどがあります。これらの文字セットについて簡単に紹介します。 ASCII 文字セット この文字セットは、エンコードに 1 バイトを使用します。1 バイトは 8 ビットで、合計 128 文字を格納できます。具体的な対応は次のとおりです。 ラテン文字セット ラテン文字セットには合計 256 文字を保存できます。ASCII コードと比較すると、西ヨーロッパでよく使用される 128 文字が含まれています。 GB2312 文字セット 漢字、ラテン文字、ギリシャ文字などが含まれており、そのうち漢字が6763個と大半を占め、その他のテキスト記号は638個で、ASCII文字と互換性があります。 ASCII をエンコードする場合は 1 バイト、つまり 128 ビットを使用し、その他の文字をエンコードする場合は 2 バイトを使用します。辺長符号化方式であることが分かります。 GBK 文字セット この文字セットは、GB2312 文字セットの拡張です。GB2312 文字セットと互換性があり、通常は 2 バイトを使用してエンコードされます。 UTF8 文字セット 通常、1〜4バイトでエンコードされます。使用されるバイトの違いにより、UTF8とutf8mb4に分けられます。mb4は最大4バイトを意味します。一般的に、UTF8はエンコードに3バイトを使用します。さらに、utf16とutf32があります。utf16は2バイトまたは4バイトを使用して文字をエンコードし、utf32は4バイトを使用して文字をエンコードします。 一部の絵文字表現は utf8mb4 を使用して表現する必要があることに注意してください。 2 MySQLでサポートされている文字セット MySQL は多くの文字セットをサポートしています。ローカル文字セットを例にとると、show charset コマンドを使用して、現在のサーバーでサポートされている文字セットを表示します。結果は次のようになります。 [email protected]:(なし) 22:46:48>>文字セットを表示; +----------+-----------------------------+----------------------+--------+ | 文字セット | 説明 | デフォルトの照合順序 | Maxlen | +----------+-----------------------------+----------------------+--------+ | big5 | Big5 繁体字中国語 | big5_chinese_ci | 2 | | dec8 | DEC 西ヨーロッパ | dec8_swedish_ci | 1 | | cp850 | DOS 西ヨーロッパ | cp850_general_ci | 1 | | hp8 | HP 西ヨーロッパ | hp8_english_ci | 1 | | koi8r | KOI8-R Relcom ロシア語 | koi8r_general_ci | 1 | | latin1 | cp1252 西ヨーロッパ語 | latin1_swedish_ci | 1 | | latin2 | ISO 8859-2 中央ヨーロッパ | latin2_general_ci | 1 | | swe7 | 7 ビット スウェーデン語 | swe7_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | ujis | EUC-JP 日本語 | ujis_japanese_ci | 3 | | sjis | Shift-JIS 日本語 | sjis_japanese_ci | 2 | | ヘブライ語 | ISO 8859-8 ヘブライ語 | hebrew_general_ci | 1 | | tis620 | TIS620 タイ語 | tis620_thai_ci | 1 | | euckr | EUC-KR 韓国語 | euckr_korean_ci | 2 | | koi8u | KOI8-U ウクライナ語 | koi8u_general_ci | 1 | | gb2312 | GB2312 簡体字中国語 | gb2312_chinese_ci | 2 | | ギリシャ語 | ISO 8859-7 ギリシャ語 | greek_general_ci | 1 | | cp1250 | Windows 中央ヨーロッパ | cp1250_general_ci | 1 | | gbk | GBK 簡体字中国語 | gbk_chinese_ci | 2 | | latin5 | ISO 8859-9 トルコ語 | latin5_turkish_ci | 1 | | armscii8 | ARMSCII-8 アルメニア語 | armcii8_general_ci | 1 | | utf8 | UTF-8 ユニコード | utf8_general_ci | 3 | | ucs2 | UCS-2 ユニコード | ucs2_general_ci | 2 | | cp866 | DOS ロシア語 | cp866_general_ci | 1 | | keybcs2 | DOS カメニツキ チェコ語-スロバキア語 | keybcs2_general_ci | 1 | | macce | Mac 中央ヨーロッパ | macce_general_ci | 1 | | macroman | Mac 西ヨーロッパ | macroman_general_ci | 1 | | cp852 | DOS 中央ヨーロッパ | cp852_general_ci | 1 | | latin7 | ISO 8859-13 バルト語 | latin7_general_ci | 1 | | utf8mb4 | UTF-8 ユニコード | utf8mb4_general_ci | 4 | | cp1251 | Windows キリル文字 | cp1251_general_ci | 1 | | utf16 | UTF-16 ユニコード | utf16_general_ci | 4 | | cp1256 | Windows アラビア語 | cp1256_general_ci | 1 | | cp1257 | Windows バルト語 | cp1257_general_ci | 1 | | utf32 | UTF-32 ユニコード | utf32_general_ci | 4 | | バイナリ | バイナリ疑似文字セット | バイナリ | 1 | | geostd8 | GEOSTD8 グルジア語 | geostd8_general_ci | 1 | | cp932 | Windows 日本語用 SJIS | cp932_japanese_ci | 2 | | eucjpms | Windows 日本語用 UJIS | eucjpms_japanese_ci | 3 | +----------+-----------------------------+----------------------+--------+ セット内の行数は 39 です (0.00 秒) ご覧のとおり、合計 39 個の文字セットがサポートされています。もちろん、この数はバージョンによって異なります。これら 39 個の文字セットのうち、覚えておく必要がある主なものは次のとおりです。 +----------+-----------------------------+----------------------+--------+ | 文字セット | 説明 | デフォルトの照合順序 | Maxlen | +----------+-----------------------------+----------------------+--------+ | latin1 | cp1252 西ヨーロッパ語 | latin1_swedish_ci | 1 | | ascii | US ASCII | ascii_general_ci | 1 | | gb2312 | GB2312 簡体字中国語 | gb2312_chinese_ci | 2 | | gbk | GBK 簡体字中国語 | gbk_chinese_ci | 2 | | utf8 | UTF-8 ユニコード | utf8_general_ci | 3 | | utf8mb4 | UTF-8 ユニコード | utf8mb4_general_ci | 4 | +----------+-----------------------------+----------------------+--------+ ここでは、最大長に含まれるバイト数のみを知る必要があります。 3 検証ルール 文字セットの検証ルールとは、文字セットのサイズを比較するときに使用される基準を指します。たとえば、a と B のサイズを比較する場合、大文字と小文字を区別しなければ、a<B となります。大文字と小文字を区別すれば、a>B となります。つまり、文字セットは同じでも比較ルールが異なると、データ列の並べ替え結果が異なります。 MySQL の文字検証ルールは、次のように show collation; 構文を使用して表示できます。 [email protected]:(なし) 23:00:36>>照合順序を表示; +-----------------------+----------+-----+----------+----------+----------+ | 照合 | 文字セット | ID | デフォルト | コンパイル済み | ソート長 | +-----------------------+----------+-----+----------+----------+----------+ | big5_chinese_ci | big5 | 1 | はい | はい | 1 | | big5_bin | big5 | 84 | | はい | 1 | | dec8_swedish_ci | dec8 | 3 | はい | はい | 1 | | dec8_bin | dec8 | 69 | | はい | 1 | ........... | koi8r_general_ci | koi8r | 7 | はい | はい | 1 | | koi8r_bin | koi8r | 74 | | はい | 1 | | latin1_german1_ci | latin1 | 5 | | はい | 1 | | koi8u_general_ci | koi8u | 22 | はい | はい | 1 | | utf8_general_ci | utf8 | 33 | はい | はい | 1 | | utf8_bin | utf8 | 83 | | はい | 1 | | utf8_unicode_ci | utf8 | 192 | | はい | 8 | | utf8_icelandic_ci | utf8 | 193 | | はい | 8 | | utf8_latvian_ci | utf8 | 194 | | はい | 8 | | utf8_romanian_ci | utf8 | 195 | | はい | 8 | | utf8_slovenian_ci | utf8 | 196 | | はい | 8 | | utf8_polish_ci | utf8 | 197 | | はい | 8 | | utf8_estonian_ci | utf8 | 198 | | はい | 8 | +-----------------------+----------+-----+----------+----------+----------+ セット内の行数は 195 です (0.00 秒) 結果には合計 195 の比較ルールがあることがわかります。各文字セットには、独自のデフォルトの検証ルールが含まれています。1 つを簡単に説明します。utf8_polish_ci はポーランド語に基づいて比較します。この検証ルールは 3 つの部分で構成されます。比較ルール名は、それに関連付けられた文字セットの名前で始まります。utf8 は utf8 文字セットの比較ルールを指し、polish はポーランド語を指し、_ci は大文字と小文字を区別しないことを示します。 最後の接尾辞については、次のようにまとめることができます。 _aiはアクセントを区別しません _asはアクセントを区別します _ci 大文字と小文字を区別しない (insensitive) 大文字と小文字を区別しない _cs 大文字と小文字を区別する (区別する) 大文字と小文字を区別する _bin バイナリ 上記の結果では、いくつかの検証ルールのデフォルト列の値が yes になっていることもわかります。これは、この検証ルールが文字セットのデフォルトの検証ルールであることを意味します。 4 サーバー上の文字セットと比較規則 MySQL には、サーバー レベルの文字セットと比較ルールを表す 2 つのシステム変数が用意されています。1 つは character_set_sever、もう 1 つは collation_server です。それぞれのデフォルト値は次のように確認できます。 [email protected]:(なし) 23:12:28>>'character_set_server' のような変数を表示します。 +----------------------+-------+ | 変数名 | 値 | +----------------------+-------+ | 文字セットサーバー | utf8 | +----------------------+-------+ セット内の 1 行 (0.00 秒) [email protected]:(なし) 23:12:47>>'collation_server' のような変数を表示します。 +------------------+-----------------+ | 変数名 | 値 | +------------------+-----------------+ | 照合サーバー | utf8_general_ci | +------------------+-----------------+ セット内の 1 行 (0.00 秒) [email protected]:(なし) 23:12:57>> MySQL では、文字セットと検証ルールは、サーバー レベル、データベース レベル、テーブル レベル、フィールド レベルの 4 つのレベルに分かれています。ここでは、それぞれ例を挙げて説明します。 データベース レベルmysql 23:23:48>>create database yyz character set utf8 collate utf8_general_ci; クエリは正常、1 行が影響を受けました (0.01 秒) テーブルレベルmysql 23:24:23>>create table yyz.yyz (name varchar(10)) charset gb2312 collate gb2312_chinese_ci; クエリは正常、影響を受けた行は 0 行 (0.04 秒) フィールドレベルmysql 23:27:06>> [email protected]:(なし) 23:27:06>>alter table yyz.yyz add num varchar(10) charset gbk collate gbk_chinese_ci; クエリは正常、影響を受けた行は 0 行 (0.11 秒) レコード: 0 重複: 0 警告: 0 結果を表示しますmysql 23:28:27>>show create table yyz.yyz; +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | テーブル | テーブルの作成 | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ | yyz | テーブル `yyz` を作成します ( `name` varchar(10) デフォルト NULL, `num` varchar(10) 文字セット gbk デフォルト NULL ) エンジン=InnoDB デフォルト文字セット=gb2312 | +-------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ セット内の 1 行 (0.00 秒) 文字セットと比較ルールは相互に関連しているため、文字セットのみを変更すると、比較ルールも変更されます。比較ルールのみを変更すると、文字セットも変更されます。具体的なルールは次のとおりです。 文字セットのみを変更すると、比較規則は変更された文字セットのデフォルトの比較規則になります。 覚えておくべきことがあと 4 つあります。
以上がMySQLの文字セットと検証ルールの詳細な説明です。MySQLの文字セットと検証ルールの詳細については、123WORDPRESS.COMの他の関連記事に注目してください。 以下もご興味があるかもしれません:
|
<<: JavaScript継承のさまざまな方法とメリット・デメリットを詳しく解説
>>: dns-prefetch とは何ですか? フロントエンドの最適化: DNS の事前解決によりページ速度が向上します
問題<br />レスポンシブ レイアウトでは、iframe 要素に注意する必要があります...
(I)ウェブページのカラーマッチングの基本概念(1)白黒の言葉は永遠のテーマです。誰もそれを悪く言う...
C++でMySQLに接続する際の参考情報です。具体的な内容は以下のとおりです。 MySQLCon ク...
序文開発プロセスにおいて、変数の定義は非常に頻繁かつ基本的なタスクです。変数の使用シナリオと範囲に応...
Like は中国語で「好き」を意味しますが、MySQL データベースに適用される場合、Like は、...
検索ミラー docker 検索 rocketmq画像バージョンを表示他の画像を表示したい場合は、画像...
ユーザー テーブルを設計するときに、各人の ID 番号が一意であり、検索する必要があるシナリオを想像...
0x00 はじめに数か月前、Firefox に脆弱性 (CVE-2019-17016) があること...
目次1. アニメーション機能の原理2. アニメーション関数のシンプルなカプセル化3. アニメーション...
この記事では、WeChatアプレットで星評価を実装するための具体的なコードを参考までに紹介します。具...
1. ダウンロードしたMySQLの圧縮パッケージをインストールディレクトリに解凍します。 2. 新し...
序文フロントエンド開発では、配列内に要素が存在するかどうかを判断する必要があることがよくあります。実...
.net 開発に関しては、Microsoft の SQL Server データベースに精通しており、...
目次非同期トラバーサル非同期反復可能トラバーサル非同期反復生成非同期メソッドと非同期ジェネレーター非...
今日、データベース操作はますますアプリケーション全体のパフォーマンスのボトルネックになりつつあり、こ...