やじうまの杜

キャラ名に「ソ」をいれるとバグる! 古参開発者「うっ……頭の中で何かが……」

「ドカポンキングダム コネクト」で起きたShift_JIS文字コードの「ダメ文字」問題って?

 「やじうまの杜」では、ニュース・レビューにこだわらない幅広い話題をお伝えします。

「ドカポンキングダム コネクト」にちょっと変わった問題が発見

 4月13日に発売されたばかりの「Nintendo Switch」向けのハチャメチャRPG風ボードゲーム「ドカポンキングダム コネクト」にちょっと変わった問題が発見されて話題になっています。 キャラクター名に「ソ」という文字が入っていると、セーブデータからゲームを再開できない のだそう。

 この問題はキャラクター名にカタカナの「ソ」を使わなければ回避可能。たとえば、「ソーセージ」ならバグが直撃しますが、「そーセージ」なら大丈夫です。

 「ドカポンキングダム コネクト」のキャラ名には「Nintendo Switch」で設定したユーザーニックネームが使われるそうなので、「Nintendo Switch」でニックネームを変更すれば問題を回避できます。

 開発元であるコンパイルハートは後日、バージョンアップパッチを配信してこの問題を解決するとしていますが、なぜこんな不具合が起こったのでしょうか。

 多くの古参開発者が指摘しているのは、Shift_JIS文字コードの「ダメ文字」問題です。

2バイト目が5C等になりうることによる問題

Shift_JISでは、カタカナの「ソ」、漢字の「噂」など一部の文字の2バイト目に、5Cを使用している。この符号はJIS X 0201では円記号、ASCIIなどではバックスラッシュに該当し、多くのプログラミング言語(C、Perl、Bourne Shellなど多数)ではエスケープ文字(注:画面上に文字を出力する際に、文字そのものを出力するのではなく、文字色の変更やカーソルの移動、文字の消去など、文字出力の制御を行う特殊な文字列のこと)と扱う。したがって、ソースコードや文字データの処理においてShift_JISを想定していないプログラミング環境では問題が起こる。この問題は、同じように2バイト目の範囲に5Cを含むBig5や、まれではあるがGBKなどの文字コードでも発生しうる

Shift_JIS - Wikipediaより引用

 たとえば「ソフト」(835C 8374 8367)というテキストの場合、「5C」の部分がエスケープ文字と解釈されて「ャtト」(8383 74 8367)などと文字化けすることがあります。プログラムによってはクラッシュしたりするかもしれません。

 ちなみに、ダメ文字として有名なのは以下の文字です。

ソ噂浬欺圭構蚕十申曾箪貼能表暴予禄兔喀媾彌拿杤歃濬畚秉綵臀藹觸軆鐔饅鷭

 今回の問題が「ダメ文字」に関連しているのかは定かではありませんが、古くからの開発者がこれを指摘する一方で、「知らなかった」というユーザーもちらほら。もはや「メモ帳」の既定文字コードすらUTF-8になる時代ですし、「ダメ文字」も過去の話になりつつあるのかもしれません。