

高岡智則
年齢:33歳 性別:男性 職業:Webディレクター(兼ライティング・SNS運用担当) 居住地:東京都杉並区・永福町の1LDKマンション 出身地:神奈川県川崎市 身長:176cm 体系:細身〜普通(最近ちょっとお腹が気になる) 血液型:A型 誕生日:1992年11月20日 最終学歴:明治大学・情報コミュニケーション学部卒 通勤:京王井の頭線で渋谷まで(通勤20分) 家族構成:一人暮らし、実家には両親と2歳下の妹 恋愛事情:独身。彼女は2年いない(本人は「忙しいだけ」と言い張る)
utf8mb3とは?初心者向け解説
このページでは「utf8mb3」という文字コードについて、初心者の方にも分かるように丁寧に解説します。まず、文字コードとは何か、そして utf8mb3 がどのように使われてきたのか、どんな特徴があるのかを順番に見ていきます。
結論から言うと、utf8mb3 は 3バイトまでの UTF-8 表現を指します。つまり、1文字を最大で 3 バイトで表現します。これに対して utf8mb4 は 4 バイトまで対応しており、絵文字や多言語の一部文字も含めて表現可能です。
長い歴史の中で、データベースの文字コードとして utf8mb3 は広く使われてきました。utf8mb3 は古い規格の名残であり、現在の新規プロジェクトでは utf8mb4 を選ぶのが一般的です。ここでは utf8mb3 の基本と、実務での扱い方を優しく解説します。
utf8mb3 の基本と仕組み
UTF-8という考え方は、世界中の文字を 1 つの共通ルールで表すことを目指しています。utf8mb3 はこの仕組みのうち、最大 3 バイトで表現できる最小の構成を指します。これにより、英数字や日本語の一部の文字は問題なく表現できますが、4 バイトを必要とする文字は扱えません。
日常のウェブサイトやアプリのデータベースで起こりがちなのは、絵文字や一部の漢字・漢字の拡張文字などが原因でデータが切れてしまうケースです。utf8mb3 はこうしたケースに弱く、utf8mb4 へ移行することで問題を回避できます。
utf8mb3 と utf8mb4 の違い
両方とも UTF-8 系の表現ですが、utf8mb3 は最大 3 バイト、utf8mb4 は最大 4 バイトです。これにより、utf8mb3 では絵文字や多言語の特殊文字を保存できません。一方、utf8mb4 は現代の文字をほぼすべて扱うことができます。
実務での大きな違いは次の点です。1) 文字の正確な保存能力、2) 移行時の互換性、3) データのサイズとパフォーマンスのバランスです。utf8mb4 を選ぶと、後で後悔する可能性が低くなります。
データベースでの変更・移行の基本
現在 utf8mb3 を使っているデータベースを utf8mb4 に変更する場合、基本的な手順は以下のとおりです。まずはデータのバックアップを取り、次にテーブルの文字セットを変えていきます。具体例は以下の通りです。
| 特性 | utf8mb3 | utf8mb4 |
|---|---|---|
| 最大バイト数 | 3 バイト | 4 バイト |
| 対応文字の範囲 | BMP中心 | ほぼ全世界の文字 |
| 絵文字対応 | 不可 | 可能 |
| 移行のおすすめ度 | 限定的な互換性 | 新規・推奨 |
移行の際には ALTER 文を使って順次変更します。例としては、テーブルごとに CHARACTER SET utf8mb4 に変更することで、文字コードの互換性と将来性を確保できます。実務の現場では、変更後のアプリケーションの動作確認、バックアップ戦略、検索・ソートの動作検証を丁寧に行うことが大切です。
まとめとおすすめの選択
このページのポイントを 要約 します。utf8mb3 は 3 バイトまでの表現に限定される古い UTF-8 の一種です。新規開発や長期運用を考えると、utf8mb4 の利用推奨が一般的です。既存データの移行には慎重さと計画が必要ですが、移行後は絵文字や特殊文字を含む多くの文字を安心して扱えます。
utf8mb3の同意語
- utf8mb3
- 3バイトUTF-8を表すMySQLの文字セット名。4バイト版のutf8mb4とは別物で、過去のUTF-8仕様を指します。現在は非推奨ですが、互換性のため文書で見かけることがあります。
- 3-byte UTF-8
- 1文字を表すのに最大3バイトを使うUTF-8の表現。BMPまでを対象とし、絵文字や一部の文字は表現できません。文献上、utf8mb3の説明として使われることがあります。
- 3バイトUTF-8文字セット
- utf8mb3と同義の表現。MySQLなどで3バイト版UTF-8を指す名称として使われることがあります。
- utf8mb3_legacy
- レガシー(旧仕様)UTF-8としての名称。現在は utf8mb4 の使用が推奨され、utf8mb3 は互換性のためだけに残るケースが多いです。
- utf8_3byte
- 3バイト長のUTF-8を指す表現の別名。実務の資料や説明で utf8mb3 の代替表現として見かけることがあります。
utf8mb3の対義語・反対語
- utf8mb4
- utf8mb3の4バイト対応版。4バイト文字も扱えるので、絵文字や漢字の追加文字も含む全Unicodeに対応します。
- ASCII
- 1バイト(7ビット)で英数字と基本記号のみを表す、最も小さく制約の多い文字セット。utf8mb3の多バイト対応とは反対の性質です。
- latin1(ISO-8859-1)
- 1バイト固定の西欧言語用文字セット。UTF-8系の多バイト対応とは異なり、全Unicodeには対応していません。
- UTF-16
- 2バイトまたは4バイトの組み合わせで文字を表現するUnicodeエンコーディング。UTF-8系とは別の方式で、扱える文字や処理の仕方が異なります。
- UTF-32
- 固定4バイトで文字を表現するUnicodeエンコーディング。メモリ消費が大きい一方、単純なコードポイント操作が容易です。
- Shift_JIS
- 日本語を中心とする古い8ビット系エンコーディング。Unicode系(UTF-8/UTF-16/UTF-32)とは異なる設計思想・範囲を持ちます。
- EUC-JP
- 日本語を含む多バイトエンコーディングの一つ。UTF-8系とは別の規則で文字を表現します。
utf8mb3の共起語
- utf8mb3
- MySQLが過去から使ってきた、3バイトまでのUTF-8文字セット。4バイト文字は表現できず、現在は utf8mb4 への移行が推奨されています。
- utf8mb4
- UTF-8 の4バイト版。Unicode の全文字を表現可能で、推奨される文字セットです。
- utf8
- MySQL 5.x などで使われてきた、3バイトUTF-8の名称。実質は utf8mb3 と同義に扱われることが多く、混乱の原因になることがあります。
- 文字セット
- データベースで扱う文字の集合のこと。utf8mb3 や utf8mb4 は文字セットの一種です。
- 文字コード
- 文字を表現するための規格。ここでは主に UTF-8 系のエンコーディングを指します。
- 照合順序
- 文字列の比較・並べ替えの規則。utf8mb3/utf8mb4 には utf8mb3_general_ci などの照合順序があります。
- MySQL
- リレーショナルデータベース管理システム。データベース・テーブル・カラムごとに文字セットと照合順序を設定します。
- MariaDB
- MySQLと互換性のあるデータベース。utf8mb3/utf8mb4 の取り扱いはほぼ同様で、移行時の注意点があります。
- 3バイトUTF-8
- 1文字を表現するのに最大3バイトを使うUTF-8の仕様。4バイト文字は表現できません。
- 4バイト文字
- Unicode の補助平面の文字。UTF-8 では4バイトで表現します。
- BMP
- Basic Multilingual Plane の略。U+0000〜U+FFFF の範囲を指します。
- 補助平面
- BMP 以外の Unicode 範囲。U+10000 以上の文字を指し、4バイトUTF-8で表現されます。
- 移行
- utf8mb3(3バイトUTF-8)から utf8mb4(4バイトUTF-8)へ移行する際の手順・注意点。
- 互換性
- 既存アプリやSQLの文字セット依存を解消する際の検討事項。utf8mb3 から utf8mb4 への移行では互換性の問題が起き得ます。
- 設定
- character_set_client、character_set_connection、character_set_results など、使用する文字セットを指定する設定項目。
- インデックス長
- 文字セットと文字数によりインデックスの最大長が変わる点。utf8mb4 は同じ文字数でもバイト長が大きくなることがあります。
- パフォーマンス
- 文字セットと照合順序はクエリの実行計画やストレージサイズに影響します。utf8mb4 の方がコストが大きくなる場合がありますが、全 Unicode 対応のメリットとセットで検討します。
- Unicode
- 国際的な文字集合。UTF-8 は Unicode コードポイントを可変長で表現します。
- コードポイント
- Unicode の文字を一意に識別する番号。UTF-8 のエンコードはこのコードポイントに基づいて決まります。
utf8mb3の関連用語
- utf8mb3
- MySQLで歴史的に用いられてきた3バイトUTF-8のエンコーディング。BMPのみをサポートし、補足平面の文字は保存できません。古いMySQLで使われてきた仕様で、現在は utf8mb4 の使用が推奨されます。
- utf8
- MySQLでの旧来の3バイトUTF-8の名称。utf8mb3と同義で、現在はutf8mb4の普及・推奨に伴いレガシー扱いです。
- utf8mb4
- 4バイトUTF-8のエンコーディング。Unicodeの全コードポイントをサポートし、絵文字や補足平面の文字を保存できます。ストレージは文字によって多くのバイトを必要とすることがあります。
- Unicode
- すべての文字に一意のコードポイント(U+0000〜U+10FFFF)を割り当てる国際標準。
- UTF-8
- Unicodeの可変長エンコーディング。1〜4バイトで表現され、ASCIIと互換性があります。
- BMP
- Basic Multilingual Planeの略。Unicodeの最初の65,536コードポイントの集合。日常的な文字の大半が含まれます。
- 補足平面
- BMPを超える文字が含まれるUnicodeの平面群。U+10000以降の文字(多くの絵文字など)が対象です。
- 絵文字
- 補足平面に位置することが多いUnicode文字。utf8mb4での保存が必要になることがあります。
- コレーション
- 照合順序。文字列の比較・ソートを決定するルール。大文字小文字、アクセント、言語固有の規則を含みます。
- 文字セット
- Character Setの日本語表記。データベースが文字をどのように格納・扱うかを決める設計要素です。
- MySQL
- オープンソースのデータベース管理システム。文字セットや照合順序の設定を細かく制御します。
- インデックス長制限
- utf8mb4など4バイト文字セットではインデックスキーの長さ制限が生じる場合があります。バージョンや設定次第で変わります。
- 移行推奨
- utf8mb3/utf8からutf8mb4へ移行することを推奨。Unicode全体のサポートと将来性の観点からです。
- 文字長とバイト長
- UTF-8は可変長で、1〜4バイト/文字。utf8mb3は最大3バイト、utf8mb4は最大4バイトです。
- ASCII
- 7ビット文字セット。UTF-8のASCII範囲は1バイトで表現され、互換性が高いです。
- コードポイント
- Unicodeで文字を表す番号。例: 'あ'はU+3042。
- BOM
- UTF-8ファイルの先頭に現れる場合がある特別なマーク。データベースへ読み込む際はトラブルの原因になることがあります。
- 移行の注意点
- データの文字長、インデックス、照合順序を確認してからutf8mb4へ移行することが推奨されます。



















