ガイド 02

バイト数計算の仕組み:UTF-8、EUC-KR、CP949

ハングルが2バイトの場合と3バイトの場合の違い。文字コード別のバイト数計算方法と、ショートメッセージやデータベースでの注意点。

文字数とバイト数は違う

文字数は人が見る文字の個数で、バイト数はその文章をコンピューターに保存するときに占める大きさです。同じ文字でも、どの文字エンコーディング(文字を数値に変換する規則)を使うかによってバイト数が変わります。英字と数字はほぼすべてのエンコーディングで1バイトですが、ハングルはエンコーディングによって2バイトにも3バイトにもなります。

UTF-8:今日の標準

UTF-8は、Webページやほとんどの現代的なソフトウェアが使うエンコーディングです。Unicodeの番号(コードポイント)の大きさに応じて1〜4バイトを使います(RFC 3629)。

コードポイントの範囲バイト
U+0000 ~ U+007F1英字、数字、基本的な記号
U+0080 ~ U+07FF2é、ñ、ギリシャ・キリル・アラビア文字
U+0800 ~ U+FFFF3ハングル、漢字、かな
U+10000 ~ U+10FFFF4ほとんどの絵文字、古代文字

ハングルの完成形音節(가〜힣、U+AC00〜U+D7A3)はすべて3番目の範囲にあるため、UTF-8では1文字3バイトです。たとえば「안녕하세요」(こんにちは)は5文字、15バイトです。

UTF-16

JavaScript・Java・Windowsの内部で使われるUTF-16は、ほとんどの文字を2バイトで、絵文字のようにU+10000以上の文字を4バイト(サロゲートペア)で保存します。JavaScriptの文字列の長さが絵文字を2と数えるのはこのためです。

EUC-KR:韓国の完成形エンコーディング

EUC-KRは、韓国の産業規格 KS X 1001 に基づくエンコーディングです。英字・数字は1バイト、KS X 1001に含まれる文字は2バイトです。KS X 1001には、よく使うハングル音節2,350字と漢字4,888字、かな・ギリシャ文字・キリル文字とさまざまな記号が収録されています。

問題は、現代ハングル音節11,172字のうち2,350字しか含まれていないことです。「똠」「햏」「뷁」のように一覧にない文字は、基本のEUC-KRの2バイトでは表現できません。規格の附属書にある組み合わせ方式で8バイトを使う方法もありますが、対応するプログラムがまれなため、たいていは「?」に置き換わるかエラーになります。

CP949:拡張完成形

CP949(Microsoftの「統合型ハングルコード」)はEUC-KRを拡張し、現代ハングル11,172字をすべて2バイトで収録します。Windowsの韓国語の標準コードページだったため、古い韓国語の文書やシステムで広く使われています。英字1バイト・ハングル2バイトという「ハングル2バイト」の慣行は、ほとんどがこの方式に由来します。

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

このツールの計算方法

UTF-8のバイト数は、各文字のコードポイントから正確に計算します。EUC-KRとCP949は、それぞれのエンコーディングの実際の文字表に基づき、文字ごとに2バイトで表現できるかを確認して計算します。表現できない文字(絵文字、一覧にないハングルなど)は通常「?」の1バイトに置き換わるため1バイトとして計算し、そうした文字がいくつあるかを別に表示します。設問別モードで制限の基準を「バイト(ハングル2)」にすると、CP949方式で数えます。

基準日: 2026-09-23

文字数カウントツールを開く →