SHIFT-JISの落とし穴


制御文字というのがあります。
「\n」とか「\e」とかいうやつで、プログラム中の「””」で囲まれた中で特殊な処理をする文字です。
ここで、「\」の文字コードは5Cである事に注目してみましょう。
この5Cを含む全角文字があり、しばしば問題を起こすのです。
半角文字は2バイトで表されますが、全角文字は4バイトで表されます。その4バイトの後ろの2バイトが5Cだった場合そこが「\」と認識されてしまいます。 例えば

print "「表nayuki」"

表は955C、nは6E、aは61、つまり「表na」は「95・5C・6E・61」となっています。この「5C・6E」は「\n」つまり改行文字(LF)を表します。結果、


ayuki」

と変な形に表示されてしまいます。 では、どうするかというと、問題の5Cの後ろにもう一つ5Cつまり「\」を置いてやれば良いわけです。

print "「表\nayuki」"

とすれば万事解決です。


以下にこの5Cを含む漢字を以下にまとめます。
文字コード
815C
835C
Ы845C
\875C
895C
8A5C
8B5C
8C5C
8D5C
8E5C
文字コード
8F5C
905C
915C
925C
935C
945C
955C
965C
975C
985C
文字コード
995C
9A5C
9B5C
9C5C
9D5C
9E5C
9F5C
E05C
E15C
E25C
文字コード
E35C
E45C
E55C
E65C
E75C
E85C
E95C
EA5C
xED5C
xEE5C
「詐欺」「構文」「十傑集」「予知能力」などよく使う単語にも5Cが含まれているので注意しましょう。