ホームページ >データベース >mysql チュートリアル >MySQL 文字セットとは何ですか?

MySQL 文字セットとは何ですか?

青灯夜游
青灯夜游転載
2018-10-17 17:28:025008ブラウズ

この記事では、MySQL 文字セットとは何ですか? 文字セットに関連する概要を説明します。困っている友人は参考にしていただければ幸いです。

#文字セットの紹介

  • ##gbk/gb2312 gbk/gb2312 は 2 バイト文字セットを採用しており、中国語と英語の文字は両方とも 2 文字で表され、中国語の文字を区別するために最上位ビットが 1 に設定されます。 gbk セットの子です。gbk は gb18030 のサブセットです。gb2312 は簡体字中国語文字のみを保存できます

    gbk は中国語、日本語、韓国語の文字を含む大きな文字セットです

    通常は gbk 文字セットを使用するだけで十分です
    国際的な汎用性は utf8 より劣りますが、utf8 占有データベースは gbk よりも大きいです (utf8 は 3 バイト文字セットです)




    utf8/utf8mb4
  • UTF フルネーム (Unicode Transformation Format) は、Unicode の格納方法であり、Unicode とも呼ばれる可変長文字エンコーディングです。 データベース文字セット (接続、結果、最終的な HTML ページは utf8 と一致している必要があります);UTF8 では、Unicode 文字の格納に可変長バイトを使用します。たとえば、ASCII 文字の格納には引き続き 1 バイトが使用され、アクセント付き文字、ギリシャ文字、またはキリル文字の格納には 2 バイトが使用されます。一般的に使用される中国語の文字は 3 バイトを必要とします。つまり、英語の 1 文字は 1 バイトに相当し、中国語の 1 文字 (繁体字中国語を含む) は 3 バイトに相当します。

    utf8mb4 は 1 文字あたり最大 4 バイトを保存できるため、より多くの文字セットをサポートできます。utf8mb4 は絵文字表現を保存するためにプロジェクトでよく使用されますが、これではカバーできません。アジアとアフリカの言語。 ;

    unidoce は latin1 の拡張であり、アジアとアフリカの通常言語のサポートを追加しますが、依然としてすべての言語をサポートしているわけではなく、ASCII を表すために unidoce を使用するのは効率的ではありません。多くの場合、小さな文字セットを大きな文字セットに変換するのは簡単です)
    utf8 は Unicode の拡張機能です。
    gbk、gb2312、utf8 などの文字セットは Unicode を介して相互に変換する必要があります。エンコーディング。





    文字セットの使用に関する提案

1. 中国語の端末しかないことが確実な場合ユーザーは、gbk / gb23122 を選択できます。データの移行と複数の端末の表示を容易にするために、文字を大文字と小文字で区別する必要がない場合は、utf8

3 を使用するのが最適です。機密である場合は、デフォルトの xx_ci チェック セットを使用できます。それ以外の場合は、xx_bin 検証セットを選択します (運用環境では、検証セットを変更しないようにしてください)。

4 デフォルトの文字セットは、latin1 に格納されます。中国語の文字を個別に使用すると、検索結果が十分に正確になりません。スペースを節約するため、使用はお勧めできません。

MySQL 文字セット範囲

## サーバー層 (サーバー) > データベース (データベース) > フィールド (列) > 結果セット (結果) ##MySQL 文字セットの優先順位

接続 | 結果セット (結果) > データ テーブル (テーブル) > データベース (データベース) > サーバー層 (サーバー)

##char type

char(N): N は文字数を表します (文字数とも呼ばれます)。バイトではなく文字長です。

char(N): これは固定長ストレージであり、固定長のストレージ領域を占有し、MySQL が char(N) 型を処理するときに不足部分がスペースで埋められます。スペースを削除して返す必要があります。 記憶域: char(N) 型の記憶域は文字セットに関連しており、先ほどの文字セットの知識ポイントと組み合わせると、中国語は utf8 文字セットの 3 バイトを占有し、gbk は占有します。 2バイト、数字、文字を一律1文字で表現します。

ストレージメカニズム: 長さが不十分な場合、MySQL はデータを保存するときに 16 進数の 20 の代わりに特別なスペースを埋める必要があります。考え: char(30 )、最大数。さまざまな文字セットで保存できる文字と漢字の数、および占有スペースgbk: 30 バイトを保存でき、30*2utf8 のスペースを必要とします。

#: 30 バイトを保存でき、30*3 のスペースを必要とします。


varcahr type

##varchar(N): N はバイト数ではなく、文字数 (文字長とも呼ばれます) を表します

varchar(N):必要な記憶領域のみを使用する可変長記憶域です。

記憶領域: varchar(N) 型の記憶領域は、先ほどの文字セットの知識と組み合わせると、 a 中国語は utf8 文字セットで 3 バイトを占め、gbk は一律 2 バイトを占め、数字と文字は 1 文字で表されます。

ストレージ メカニズム: varchar(N) フィールドのストレージは実際には 2 バイト目から始まり、実際の長さを表すために 1 ~ 2 バイトが使用されます。残りはデータを格納できる範囲であるため、使用可能な最大ストレージは次のとおりです。範囲は 65535-3=65532 バイトで、最初のバイトは空かどうかを示します (長さが 255 バイト未満の場合は 1 バイトを使用し、255 バイトを超える場合は 2 バイトを使用して長さを表します)。 length)

データベース インスタンスの文字セットを変更します

一時的な影響

mysql> set character_set = 'gbk';
mysql> set character_set_client = 'gbk';

グローバルに有効

mysql> set global character_set_client = 'gbk';
Query OK, 0 rows affected (0.00 sec)

永続的な効果

vim /etc/my.cnf 
character-set-server=utf8

要約: 以上がこの記事の全内容です。皆さんの学習に役立つことを願っています。関連チュートリアルの詳細については、mysql データベース グラフィック チュートリアル MySQL ビデオ チュートリアル ブートストラップ ビデオ チュートリアル をご覧ください。

以上がMySQL 文字セットとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はcnblogs.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。