Windows-31Jだと同じバイト列になる文字
個人的なJavaのメモ。あとで消すかも。
Windows-31Jだと同じバイト列になる文字がいくつかあるようで、簡単なプログラムをこしらえて動かしてみた。ただしNew I/Oの場合。
バイト列 | 文字 | 備考 |
---|---|---|
0x5C | U+005C, U+00A5 | 円記号 ('\\' ) |
0x7E | U+007E, U+203E | チルダ ('~' ) |
0x81 0x43 | U+00B8, U+FF0C | |
0x81 0x45 | U+00B7, U+30FB | |
0x81 0x50 | U+00AF, U+FFE3 | |
0x81 0x91 | U+00A2, U+FFE0 | |
0x81 0x92 | U+00A3, U+FFE1 | |
0x81 0xCA | U+00AC, U+FFE2 | |
0x81 0xE1 | U+00AB, U+226A | |
0x81 0xE2 | U+00BB, U+226B | |
0x83 0x94 | U+3094, U+30F4 | |
0x83 0xCA | U+00B5, U+03BC |
U+00A5が円記号になるということは、ディレクトリトラバーサルなどに使えたりするかもしれない…という話題がどっかであったハズだが、どこだったかはまた忘れた。
また、変換できない場合に置換されるバイト列は疑問符 ('?'
) だったりするので、ワイルドカードなどに使えたりするかもしれない。
Windows-31Jで表せない文字やU+00A5を組み合わせるコトで、システムによってはSQLコマンドインジェクションとかに使えたりする?