文字制限を決める2つのSMSエンコーディング
ほとんどの人はSMSが160文字まで送れると思っています。それは正しいですが、GSM-7エンコーディングを使うメッセージに限った話です。GSM-7は標準的なラテン文字、数字、句読点、一般的な記号をカバーする文字セットです。メッセージのすべての文字がこのセットに属している場合、160文字の制限が適用され、1通のメッセージは正確に1SMSクレジットを消費します。
メッセージにGSM-7外の文字が含まれた瞬間——最もよくあるのは絵文字、カーリークオーテーションマーク、珍しいアクセント付きの文字——メッセージ全体が自動的にUnicode(UCS-2)で再エンコードされます。Unicodeは人類が書いたほぼすべての文字をサポートしますが、1文字あたりのデータ使用量が多くなります。結果はすぐに現れます。1セグメントあたりの制限が160文字から70文字に下がります。制限内に余裕があると思っていたメッセージが、突然2〜3セグメントの有料送信になることがあります。
PostTruncateのSMS文字数カウンターはメッセージのエンコーディングをリアルタイムで検出し、GSM-7モードかUnicodeモードかを表示し、現在のセグメント数を示します。送信前に正確な内容と料金を把握できます。
絵文字の罠:1文字で制限が半分に
これはSMSで最もよくある、そして最もコストがかかるミスです。プロフェッショナルなメッセージを作成し、思いつきで最後に👍の絵文字を追加した瞬間、1セグメントのメッセージが2セグメントになり、すべての受信者へのSMSコストが2倍になります。
絵文字はメッセージ全体をUnicodeモードに強制します——絵文字より後の部分だけでなく、メッセージ全体です。156文字目に絵文字がある155文字のメッセージは1通のSMSでは送れません——3通分かかります(155文字 ÷ Unicodeマルチパートの67文字/セグメント)。カーリークオート(" ")、ダッシュ(—)、GSM-7アルファベットにない文字でも同じことが起きます。
マルチパートメッセージ:隠れたセグメントあたりのコスト
メッセージが1セグメントを超えると、キャリアネットワークはそれを複数の部分に分割し、受信者のデバイスで再組み立てする必要があります。この再組み立てには各セグメントに小さなヘッダーが必要です——GSM-7では7バイト、Unicodeでは3バイト——これにより各部分で使用できる文字数が減ります。
具体的には:GSM-7の1セグメントメッセージは160文字ですが、2パートのGSM-7メッセージは1セグメントあたり153文字(合計306文字)になります。Unicodeの1セグメントは70文字で、2パートでは1セグメントあたり67文字(合計134文字)です。160文字(または70文字)をほんの少し超えるだけで、セグメントが1つ増えるだけでなく、すべての既存セグメントの容量も再計算されます。
GSM拡張文字:2スロット消費する記号
GSM-7の中に、拡張文字テーブルに属する小さな文字セットがあります。€ [ ] { } \ | ~とキャレット^です。これらはSMSの文字数カウントでそれぞれ2文字分として数えられます。ユーロ記号が4つあるメッセージは、4文字ではなく8文字をGSM-7の制限から消費したことになります。
PostTruncateは拡張文字を正確に2スロット分の重みでカウントするため、表示される文字数は請求に直結する正確な数値です。
疑問にお答えします。
1通のSMSには何文字入りますか?
標準のGSM-7エンコードで160文字です。絵文字やGSM以外の文字を1つでも加えると、メッセージ全体がUnicodeに切り替わり、1セグメントあたり70文字しか入らなくなります。
なぜメッセージが2通に分かれたのですか?
テキストが1セグメントを超えると、小さなヘッダー付きの複数パートとして送信され、使える文字数が1パートあたりGSM-7で153文字(Unicodeで67文字)に下がります。上のカウンターが分割点をリアルタイムで表示します。
どの文字がUnicodeモードを強制しますか?
絵文字、ほとんどの非ラテン文字、そして丸い「スマート」引用符です。€、{、}、[、]、| などGSMの「拡張」文字はGSM-7のままですが、それぞれ2文字としてカウントされます。
スペースや改行はSMSでカウントされますか?
はい。スペースや改行はそれぞれ1文字(拡張テーブルの文字なら2文字)で、文字と同じようにセグメントごとの上限にカウントされます。
最終更新:2026年5月15日