MySQL VARCHAR の長さと UTF-8: バイトと文字
MySQL テーブルに VARCHAR フィールドを作成する場合、その方法を理解することが重要です指定された長さが解釈されます。 MySQL 4.1 より前のバージョンでは、VARCHAR の長さはバイト単位で定義されていました。ただし、MySQL 4.1 以降では、長さは文字単位でカウントされます。
UTF-8 テーブルの VARCHAR(32) フィールドは、32 バイトではなく 32 文字を表します。これは、UTF-8 が可変長エンコーディングであり、各文字が複数バイト (最大 4 バイト) を占めることができるためです。
バージョン 5 の公式 MySQL ドキュメントには次のように記載されています。
"MySQL文字列定義の長さの指定を文字単位で解釈します。これは、CHAR、VARCHAR、および TEXT 型に適用されます。"
ただし、 VARCHAR 列の最大長も UTF-8 の影響を受けます。 MySQL 5.0.3 以降では、有効な最大長は行サイズ (65,535 バイト) と使用される文字セットによって制限されます。
たとえば、UTF-8 文字は 1 文字あたり最大 3 バイトを必要とするため、 、UTF-8 を使用する VARCHAR 列は、最大 21,844 文字で宣言できます。これは、21,844 に 3 を乗じた値 (1 文字あたりのバイト数) が 65,532 となり、最大行サイズ内で他の列データ用に 3 バイトのバッファーが残るためです。
以上がVARCHAR の長さは MySQL で UTF-8 でどのように機能しますか: バイトまたは文字?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。