sakutto
豆知識

文字数とバイト数の違い|UTF-8・Shift-JISの仕組みを解説

文字数バイト数UTF-8Shift-JISエンコーディング

「文字数は10文字なのに、バイト数は30バイトになるのはなぜ?」――文字数とバイト数は似ているようで異なる概念です。この記事では、文字数とバイト数の違いと、エンコーディング方式による違いをわかりやすく解説します。

文字数とバイト数の違い

文字数とは

文字数は「文字の個数」です。日本語でも英語でも、1文字は1文字としてカウントされます。

例: 「こんにちは」→ 5文字、「Hello」→ 5文字

バイト数とは

バイト数は「データのサイズ」です。コンピューターが文字をデータとして保存する際に必要な容量を表します。

重要なポイント: 文字によって必要なバイト数が異なります。

文字の種類UTF-8でのバイト数Shift-JISでのバイト数
半角英数字(A, 1, @)1バイト1バイト
半角カナ(ア, イ)3バイト1バイト
全角ひらがな(あ, い)3バイト2バイト
全角カタカナ(ア, イ)3バイト2バイト
漢字(山, 川)3バイト2バイト
絵文字(😀)4バイト非対応

つまり、同じ5文字でも:

  • 「Hello」→ UTF-8で5バイト
  • 「こんにちは」→ UTF-8で15バイト

エンコーディングとは

エンコーディング(文字コード)は、文字をコンピューターが処理できるデータ(バイト列)に変換するルールです。代表的なエンコーディングを紹介します。

UTF-8

現在最も広く使われているエンコーディングです。世界中のほぼすべての文字を表現できます。

  • 特徴: 英数字は1バイト、日本語は3バイト
  • 用途: Webサイト、プログラミング、メール(現在の標準)
  • メリット: 世界中の文字に対応、英語が1バイトで効率的

Shift-JIS

日本語向けに開発されたエンコーディングです。

  • 特徴: 英数字は1バイト、日本語は2バイト
  • 用途: 古い日本語システム、CSVファイル(Excel用)
  • メリット: 日本語のバイト効率が良い(UTF-8の3バイトに対して2バイト)

UTF-16

Windowsの内部処理で使われるエンコーディングです。

  • 特徴: ほとんどの文字が2バイト
  • 用途: Windows内部、Java
  • メリット: 固定長で処理しやすい

バイト数が重要になる場面

データベースの設計

データベースのカラムには「VARCHAR(255)」のようにバイト数の上限が設定されます。UTF-8では日本語1文字が3バイトなので、255バイトのカラムには日本語で最大85文字しか入りません。

入力フォームの制限

一部のWebフォームでは、文字数ではなくバイト数で入力制限がかけられています。特に古い銀行システムや行政システムでは、Shift-JISベースのバイト数制限が使われていることがあります。

メールの件名

メールの件名にはRFC上の文字数制限があり、特に日本語メールではバイト数が重要になります。

CSVファイルの作成

Excelで開くCSVファイルはShift-JISエンコーディングが一般的です。UTF-8のCSVをExcelで開くと文字化けする場合があります。

無料ツール

文字数カウント

文字数・行数・バイト数をリアルタイムでカウント

今すぐ使ってみる →

バイト数の確認方法

sakuttoの文字数カウントツールでは、テキストのバイト数を3つのエンコーディングで同時に確認できます。

  • UTF-8 バイト数: Webサイトやプログラミングで参照
  • Shift-JIS バイト数: 古いシステムやExcel向けCSVで参照
  • UTF-16 バイト数: Windows内部処理で参照

「全角半角」とバイト数の関係

日本では「全角」「半角」という概念がよく使われますが、これはバイト数と深い関係があります。

区分Shift-JISでのバイト数
半角1バイトA, 1, ア
全角2バイトA, 1, ア, あ, 漢

この「半角1バイト、全角2バイト」の対応はShift-JISに基づくもので、UTF-8ではこの対応関係は成り立ちません。

よくある質問(FAQ)

なぜ日本語はUTF-8で3バイトなのですか?

UTF-8は英数字(ASCII)を1バイトで効率的に表現することを優先した設計になっています。日本語や中国語などのCJK文字は使用頻度が低いため、3バイトの範囲に割り当てられています。

Shift-JISとUTF-8、どちらを使うべきですか?

現在のWeb開発やプログラミングではUTF-8が標準です。Shift-JISはExcelで開くCSVファイルや、レガシーシステムとの連携で使用します。新規開発ではUTF-8を選びましょう。

絵文字のバイト数はいくつですか?

UTF-8では絵文字は4バイトです。Shift-JISでは絵文字を表現できません。なお、合成絵文字(肌の色変更など)は複数のコードポイントを組み合わせるため、さらに多くのバイト数を消費します。

バイト数制限のあるフォームで効率的に入力するには?

バイト数を節約するには、全角文字を半角に変換する方法があります。例えば全角数字「123」(UTF-8で9バイト)を半角「123」(3バイト)にするだけで6バイト削減できます。

まとめ

文字数とバイト数は異なる概念で、エンコーディング方式によってバイト数は変わります。UTF-8では日本語1文字が3バイト、Shift-JISでは2バイトです。sakuttoの文字数カウントツールなら、複数のエンコーディングのバイト数を同時に確認できます。

無料ツール

文字数カウント

文字数・行数・バイト数をリアルタイムでカウント

今すぐ使ってみる →

関連ツール

無料ツール

文字数カウント

文字数・行数・バイト数をリアルタイムでカウント

今すぐ使ってみる

関連記事