CGIフォームのカスタマイズの依頼でファイルをいじった時に、特定の文字が文字化けする症状に遭遇。そんな場合に疑いたいのは、まず文字コード。それが「Shift-JIS」だった場合は、以下に挙げる文字が原因かもしれない。

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

文字化けが起きる理由と対策方法

上に挙げた文字がいずれも2バイト文字で、Shift-JISコードに変換する際に「****」という4文字の半角英数字(半角英数字2文字で全角1文字分)で表現される。この時、上に挙げた文字のいずれも末尾の文字列が「5c」になるのが原因。

5cはメタ文字(特殊文字)の「\」記号(バックスラッシュまたは円マーク)を表す。このバックスラッシュないし円マークは、プログラムではエスケープ記号として使われる(例えば\nだと改行とかになる)ため、正しく上記の文字が表示されないという症状が起こる。

この症状を回避するには、エスケープ記号を連続で表記してあげればいい。例えば、「予約」という単語を使う場合は「予」が5cを含むため「予\約」、「予定表」なら「予\定表\」のように。

他にもShift-JISで使う際に注意しなきゃいけない文字はあるので、上記で問題が解消しない、そもそも上記に該当する文字がなかった場合は、「fudist - ダメ文字一覧表」もチェックするといい。