韓国語SMSの90バイト、ハングルは何文字入る?

この記事は韓国語の文章が対象です。韓国の携帯メッセージは90バイトまでが短文(SMS)、それを超えると長文(LMS)になります。「90バイトまで」とはよく聞きますが、ハングルで何文字なのかは計算してみると意外と迷います。ハングルは1文字2バイト、英字・数字・スペースは1バイトなので、混ぜるとさらに多く入りますし、絵文字が1つ入るだけで計算も変わります。Geuljasu のバイト数計算ツールと同じ基準で、数え方と実際に計算した値をまとめました。

90バイトの数え方

バイト数は、文字をどの文字コードで保存するかによって変わります。韓国のメッセージで一般的に使われるのはEUC-KRで、Webで使うUTF-8とはハングル1文字の大きさが異なります。

文字の種類EUC-KR(近似)UTF-8
英字・数字・スペース・基本記号1バイト1バイト
ハングル1文字2バイト3バイト
漢字・かな・絵文字など2バイト(近似)文字により異なる(絵文字は4バイト前後)

Geuljasu は英字・数字を1バイト、それ以外の文字を2バイトとして数えた値を「EUC-KR近似」として表示し、この値が90以下なら短文、2,000以下なら長文と判定します。EUC-KRで表せない絵文字なども2バイトで数えます。あくまで近似値なので、実際の基準は通信事業者や配信事業者の案内で確認してください。

同じ90バイトでも文字数はこれだけ違う

90バイトに入る文字数英数字のみ: 90文字; ハングルのみ (EUC-KR): 45文字; ハングルのみ (UTF-8): 30文字020406080英数字のみ90文字ハングルのみ(EUC-KR)45文字ハングルのみ(UTF-8)30文字
90バイトに入る文字数 — ハングルだけなら45文字、英数字だけなら90文字。UTF-8基準ならハングルは30文字

ハングル45文字はEUC-KRでちょうど90バイトで、46文字になると92バイトになり長文に移ります。英数字だけで90文字を埋めると、ちょうど90バイトです。同じ90バイトでも、使う文字によって30文字から90文字まで差が出ます。「45文字まで」とだけ覚えていると、数字の混ざった実際の文面で計算が狂います。

実際の文面で計算してみる

Geuljasu の計算関数で求めた値です。韓国語の文面は入力した原文のまま、かっこ内は日本語の意味です。

文面文字数EUC-KR近似UTF-8種類
[배송] 주문하신 상품이 오늘 출고되었습니다. 운송장 1234567890 (ご注文の商品が本日出荷されました。送り状番号付き)40文字61バイト82バイト短文
Your verification code is 482915. Valid for 3 minutes.54文字54バイト54バイト短文
[글자수닷컴] 안녕하세요, 예약하신 상담이 내일 오후 3시로 확정되었습니다. 방문 전 연락 부탁드립니다. (ご予約の相談が明日午後3時に確定しました。ご来訪前にご連絡ください)58文字99バイト140バイト長文

3つ目の案内文は58文字しかありませんが、99バイトで9バイト足りず長文になります。この文面を90バイトで切ると、「…방문 전 연락 부탁」(「ご来訪前にご連絡を」にあたる部分)までの53文字が残ります。文字の途中で切らない方式で計算した結果です。絵文字が1つ付くだけでも変わります。韓国語のあいさつ「안녕하세요 😀」は7文字ですが、EUC-KR近似で13バイトです。

短文と長文の分け方

送信前の確認の順序文面を作成 → EUC-KRバイトを数える; EUC-KRバイトを数える → 90バイト以下?; 90バイト以下? → 短文(SMS) (はい); 90バイト以下? → 2,000バイト以下? (いいえ); 2,000バイト以下? → 長文(LMS) (はい); 2,000バイト以下? → 文面を削る (いいえ); 文面を削る → EUC-KRバイトを数えるはいいいえはいいいえ文面を作成EUC-KRバイトを数える90バイト以下?短文(SMS)2,000バイト以下?長文(LMS)文面を削る
送信前の確認の順序 — まずEUC-KR近似のバイト数を数え、90を超えたら削るか長文で送るかを決める

91バイトからは長文になり、ツールは2,000バイトまでを長文として扱います。ハングルだけなら1,000文字前後です。短文と長文で送信料金が違うサービスが多いので、少し削れば90バイトに収まるかを先に確認するのがおすすめです。

自分で確認するコード

ブラウザのコンソールに貼り付けると、文面のバイト数と種類がすぐ分かります。Geuljasu のバイト数計算ツールと同じ近似ルールです。

// EUC-KR近似: ASCIIは1バイト、それ以外は2バイト
function smsBytes(text) {
  let eucKr = 0;
  for (const ch of text) eucKr += ch.codePointAt(0) < 0x80 ? 1 : 2;
  const utf8 = new TextEncoder().encode(text).length;
  return { eucKr, utf8, kind: eucKr <= 90 ? '短文' : eucKr <= 2000 ? '長文' : '超過' };
}
smsBytes('[배송] 주문하신 상품이 오늘 출고되었습니다. 운송장 1234567890');

削るときの確認点

文面を貼り付けて90バイトに合わせて切るにはバイト数計算を、空白を含む・除く文字数や原稿用紙の枚数までまとめて見るには文字数カウントをお使いください。

基準:KS X 1001(EUC-KR) ハングル2バイトの規格, RFC 3629 UTF-8 ハングル3バイト, Geuljasu バイト数計算の基準(短文90・長文2, 000バイト)。出典の確認日 2026-10-20。記事中のバイト数は Geuljasu のツールと同じ方法で算出した値で、実際のSMS配信サービスは通信事業者・配信事業者の基準により異なる場合があります。

この記事に関連するツール