駄目文字

多バイト符号

[1] 多バイト符号は、 複数バイトで構成される符号です。

[2] 文字コードについて言うときは、シフトJIS型の符号を指すことが多いです。 より広い意味で、多バイトで表される任意の文字コードを指すこともあります。

[3] シフトJIS型符号

[4] シフトJIS符号は第1バイトが特定の値だと第2バイトが続く、 1バイトと2バイトの混合符号です。 (3バイト以上の符号も持つものもあります。) 具体的には各項を参照。

[5] 文字列を構成するある特定のバイトを取り出した時、 それが1バイト符号のように見えても、 2バイト符号の第2バイトであることがあります。

[6] 1バイト符号に特別な意味が割り当てられていて、 多バイト符号の第2バイトがたまたまその符号と一致するとき、 意図せぬ現象が起こることがあります。 そのような符号化文字日本IT業界俗語ダメ文字といいます。

[7] 例えば 0x5C (\) がエスケープの意味を持つ C言語の実装で使うプログラムに第2バイトが 0x5C になる2バイト文字 (例えばシフトJISの「表」) が混じると困ったことになります。 関連するようでしないようでする問題: 円問題

[8] 今ではダメ文字現象はまずないので、こんな言葉をまだ使っている人達は老人会か、 よほど特殊な業界 (古いシステムをメンテナンスし続けている人々など) です。

[9] しかし似たような話は今でもあります。 国旗絵文字

[10] OpenType cmap には format 2 があります。