全角文字は何バイト?UTF-8・Shift-JISのバイト数早見表と「文字数」との違い
半角英数字=1バイト / 絵文字=4バイト(UTF-8)
「全角20文字以内」と書かれているのに19文字で弾かれる。「40バイト以内」と言われて何文字入るのかわからない。——こうした混乱は、「文字数」と「バイト数」が別物で、しかもバイト数は文字コードによって変わることが原因です。この記事では、文字種×文字コードごとのバイト数を早見表にまとめ、実務で困らない考え方を解説します。
文字コード別バイト数早見表
| 文字の種類 | 例 | UTF-8 | Shift-JIS | EUC-JP |
|---|---|---|---|---|
| 半角英数字・記号 | A、1、@ | 1バイト | 1バイト | 1バイト |
| 半角スペース | ( ) | 1バイト | 1バイト | 1バイト |
| ひらがな・カタカナ | あ、ア | 3バイト | 2バイト | 2バイト |
| 漢字 | 漢、字 | 3バイト | 2バイト | 2バイト |
| 全角英数字・記号 | A、1、@ | 3バイト | 2バイト | 2バイト |
| 全角スペース | ( ) | 3バイト | 2バイト | 2バイト |
| 半角カタカナ | ア、ガ | 3バイト | 1バイト | 2バイト |
| アクセント付きラテン文字 | é、ü | 2バイト | —(表現不可) | — |
| 絵文字 | 😀 | 4バイト | —(表現不可) | — |
| 改行(LF) | \n | 1バイト | 1バイト | 1バイト |
| 改行(CRLF・Windows) | \r\n | 2バイト | 2バイト | 2バイト |
現在のWebサイト・スマホアプリ・クラウドサービスのほとんどはUTF-8を使っています。迷ったら「全角=3バイト、半角=1バイト」で計算すれば実務上ほぼ問題ありません。
テキストを貼り付けるだけで文字数とUTF-8のバイト数を同時に確認
文字数カウントツールを使ってみる →なぜ文字コードでバイト数が変わるのか
コンピュータは文字を「番号」で保存しています。その番号をどう並べてバイト列にするかのルールが文字コード(符号化方式)です。
- Shift-JIS:日本語専用に作られた古い方式。半角は1バイト、全角は2バイトという固定ルールで、半角カナも1バイトで扱えます。Windowsの一部や古い業務システムで現役です。
- UTF-8:世界中の文字を1つの方式で扱うため、文字によって1〜4バイトの可変長になっています。英数字は1バイトで互換性を保ち、日本語は3バイト、絵文字は4バイトを使います。
意外な落とし穴:半角カタカナはShift-JISでは1バイトですが、UTF-8では全角と同じ3バイトです。「半角カナにすれば軽くなる」はUTF-8環境では通用せず、文字化けのリスクだけが残ります。
「文字数制限」と「バイト数制限」の見分け方
入力フォームやシステムの制限は、大きく2種類に分かれます。
| 制限の種類 | 表記の例 | 全角で入る文字数の目安 |
|---|---|---|
| 文字数制限 | 「20文字以内」「全角10文字まで」 | そのまま(20文字なら全角20文字) |
| バイト数制限(UTF-8) | 「60バイト以内」 | 60÷3=全角20文字 |
| バイト数制限(Shift-JIS) | 「40バイト以内」「半角40文字相当」 | 40÷2=全角20文字 |
「半角○文字相当」「○バイト」と書かれていたらバイト数制限です。全角文字はUTF-8なら3分の1、Shift-JISなら2分の1の文字数しか入りません。
実務でよくあるトラブルと対処
データベースに絵文字が保存できない
MySQLの文字コード設定「utf8」は歴史的な理由で3バイトまでしか扱えず、4バイトの絵文字を入れるとエラーになります。「utf8mb4」に設定すると保存できます。
メールの件名が途中で切れる
メールの件名はバイト数で制限されることが多く、全角は3バイト消費します。長い件名は先頭に要件を書き、後半が切れても意味が通るようにしましょう。
Windowsで作ったテキストのバイト数が合わない
Windowsの改行はCRLF(2バイト)、Mac・Linuxの改行はLF(1バイト)です。改行が多いファイルほど差が出ます。
「全角20文字以内」なのに19文字で弾かれる
サロゲートペア(𠮷のような一部の漢字や絵文字)は、JavaScriptなどで「2文字」として数えられることがあります。見た目は1文字でも内部的に2文字扱いになるため、制限ギリギリは避けるのが安全です。
注意:Shift-JISで保存したファイルをUTF-8として開く(またはその逆)と文字化けします。バイト数の解釈が変わるためで、ファイルを保存するときの文字コードと開くときの文字コードを一致させることが基本です。
まとめ
全角文字はUTF-8で3バイト、Shift-JISで2バイト、半角英数字はどちらも1バイト、絵文字はUTF-8で4バイト。入力制限が「文字数」か「バイト数」かを見極め、バイト数制限なら全角は3分の1(UTF-8)で見積もりましょう。正確な数値は文字数カウントツールで文字数とバイト数を同時に確認できます。全角・半角が混在したデータの整理には全角半角変換ツールが便利です。