文章を書いたり、SNSに投稿したりするときに気にする「文字数」。一方で、プログラミングやデータ転送で重要になる「バイト数」。
これらは似ているようで、全く異なる概念です。「文字数=バイト数」だと思っていると、思わぬエラーや制限に引っかかることがあります。
本記事では、文字数とバイト数の根本的な違いから、文字コードによるバイト数の変動、特に注意すべきシーンまでをわかりやすく解説します。

「文字数」と「バイト数」の基本的な違い

まず、2つの言葉の定義をはっきりさせましょう。

文字数とバイト数の違いを示す概念図。左側に「あいう」という3つの文字があり「3文字」と示されている。右側にはコンピュータの箱が描かれ、その中に「あ(3バイト)」「い(3バイト)」「う(3バイト)」が格納され、「合計9バイト」と示されている。
文字数とバイト数の違い

なぜ「文字数 ≠ バイト数」になるのか?

答えは「文字コードの種類によって、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バイト (※通常表現不可)

※上記は一例です。環境によってバイト数は変動することがあります。

ポイント: 現在のWebで標準の UTF-8 では、文字の種類によって1文字あたりのバイト数が変動する「可変長」という特徴があります。アルファベットは1バイト、日本語のひらがなや漢字は3バイト、絵文字は4バイトになることが多いです。

どんな時にバイト数を意識する必要があるか?

普段、文章を書くだけなら文字数だけを気にすれば十分ですが、以下のようなIT関連の作業ではバイト数の知識が不可欠です。

まとめ

「文字数」は人間向けの指標、「バイト数」はコンピュータ向けの指標です。
Web制作、プログラミング、データ分析などを行う上では、この2つの違いを正しく理解し、特にUTF-8のように1文字あたりのバイト数が変動する文字コードを扱う際には、常にバイト数を意識することが重要です。

自分の書いたテキストの正確な文字数とバイト数(UTF-8/Shift_JIS)を知りたい場合は、専用のツールを使うのが最も簡単で確実です。