文字数とバイト数の違いとは?初心者にもわかるUTF-8とShift_JISでの数え方
文章を書いたり、SNSに投稿したりするときに気にする「文字数」。一方で、プログラミングやデータ転送で重要になる「バイト数」。
これらは似ているようで、全く異なる概念です。「文字数=バイト数」だと思っていると、思わぬエラーや制限に引っかかることがあります。
本記事では、文字数とバイト数の根本的な違いから、文字コードによるバイト数の変動、特に注意すべきシーンまでをわかりやすく解説します。
「文字数」と「バイト数」の基本的な違い
まず、2つの言葉の定義をはっきりさせましょう。
- 文字数:人間が認識する「文字の個数」です。単純に「あ」「A」「1」などを1文字として数えた合計値です。
- バイト数:コンピュータがデータを保存するときの「データの大きさ(容量)」です。コンピュータはすべての情報を0と1の数字で扱っており、その最小単位が「ビット」、ビットが8個集まったものが「バイト」です。
なぜ「文字数 ≠ バイト数」になるのか?
答えは「文字コードの種類によって、1文字を表現するために必要なバイト数が異なるから」です。
たとえば、最もシンプルな文字コードである「ASCII」では、アルファベットや数字はすべて「1文字 = 1バイト」で表現されます。しかし、日本語のように文字の種類が多い言語では、1バイトでは到底足りません。
そこで、様々な文字コードが生まれ、それぞれ1文字あたりのバイト数が異なります。
文字コードごとのバイト数の違い(例)
| 文字の例 | 文字数 | バイト数 (UTF-8) | バイト数 (Shift_JIS) |
|---|---|---|---|
abc |
3文字 | 3バイト | 3バイト |
ABC |
3文字 | 9バイト | 6バイト |
あいう |
3文字 | 9バイト | 6バイト |
テスト |
3文字 | 9バイト | 3バイト |
👍 |
1文字 | 4バイト | 2バイト (※通常表現不可) |
※上記は一例です。環境によってバイト数は変動することがあります。
どんな時にバイト数を意識する必要があるか?
普段、文章を書くだけなら文字数だけを気にすれば十分ですが、以下のようなIT関連の作業ではバイト数の知識が不可欠です。
- データベースの設計:
「名前」を保存するカラムを `VARCHAR(50)` と定義した場合、この「50」が文字数を指すのかバイト数を指すのかはデータベースの種類や設定によります。50バイトに設定した場合、日本語では約16文字しか保存できず、エラーの原因になります。 - API連携やファイル転送:
一度に送信できるデータ量(ペイロードサイズ)にバイト単位の上限が設けられていることがあります。文字数ベースで考えていると、上限を超えてエラーになる可能性があります。 - SNSやサービスの文字数制限:
一部のサービスでは、内部的にバイト数で上限を管理している場合があります。そのため、同じ100文字でも、アルファベットのみの場合と絵文字を多用した場合で、投稿できるかどうかが変わることがあります。
まとめ
「文字数」は人間向けの指標、「バイト数」はコンピュータ向けの指標です。
Web制作、プログラミング、データ分析などを行う上では、この2つの違いを正しく理解し、特にUTF-8のように1文字あたりのバイト数が変動する文字コードを扱う際には、常にバイト数を意識することが重要です。
自分の書いたテキストの正確な文字数とバイト数(UTF-8/Shift_JIS)を知りたい場合は、専用のツールを使うのが最も簡単で確実です。