サロゲートペア・機種依存文字とは

文字数のずれや文字化けの原因になりやすい文字を、テストの観点から解説します。

入力フォームやシステムの動作確認では、ふつうの日本語だけでなく扱いに注意が必要な文字を試しておくと、不具合を早めに見つけられます。ここでは、代表的な「サロゲートペア文字」と「機種依存文字」を中心に紹介します。

サロゲートペア文字とは

コンピューターでは、文字ごとに「U+3042(あ)」のような番号(コードポイント)が割り当てられています。このうち U+10000 以上の番号を持つ文字は、UTF-16という方式では2つの単位を組み合わせて1文字を表します。この組み合わせをサロゲートペアと呼びます。

代表的なのは、絵文字の 😀 や、「吉」の異体字である 𠮷(つちよし)などです。

JavaScriptなど、UTF-16を内部で使うプログラミング言語では、文字数を単純に数えるとサロゲートペア文字が2文字として数えられてしまうことがあります。その結果、次のような不具合が起きることがあります。

見た目は1文字でも、複数の文字でできていることがある

絵文字の中には、複数の文字を組み合わせて1つに見せているものがあります。たとえば家族の絵文字 👨‍👩‍👧 は、3つの人物の絵文字を「ゼロ幅接合子(ZWJ)」という見えない文字で2か所つないだもので、合計5文字でできています。

同じように、「が」には1文字の が と、「か」+「濁点」の2文字で表した形の2通りがあり、見た目は同じでも文字数が変わります。Macで作ったファイル名をWindowsに移したときなどに、この違いが原因で検索や比較がうまくいかないことがあります。

※モジツールの文字数カウントは、コードポイント(文字番号)単位で数えています。サロゲートペア文字は1文字として数えますが、組み合わせでできた絵文字は、組み合わせた文字の数でカウントされます。

機種依存文字とは

機種依存文字(環境依存文字)は、特定のパソコンや環境でしか正しく表示できない、または別の文字に化けるおそれがある文字のことです。代表的なものに次のような文字があります。

これらの多くは、昔の日本語の文字コード規格(JIS X 0208)には含まれておらず、パソコンメーカーなどが独自に追加した文字でした。現在はUnicodeが普及したため多くの環境で表示できますが、古いシステムとのデータのやり取りや、メールの文字コードによっては、今でも文字化けの原因になることがあります。

テストで試しておきたい文字の例

文字確認したいこと
𠮷 😀サロゲートペア文字が1文字として数えられるか、保存・表示できるか
👨‍👩‍👧組み合わせ絵文字の文字数の扱い、途中で切れたときの表示
① ㈱ Ⅲ機種依存文字が文字化けしないか
アイウ半角カタカナの扱い(全角への変換や入力制限)
ソ 表 能Shift_JISを使うシステムでの文字化け(2バイト目が「\」と同じ値になる、いわゆる「5C問題」)
全角スペース・改行空白や改行が文字数に含まれるか、前後の空白が削除されるか

モジツールでの確認方法

テスト用の文章を作る →

あわせて読みたい