Javaで文字コードから文字を生成する

Javaで「あらゆる制御文字が入力された場合の挙動を調べる」という作業をしました。制御文字はキーボードでの入力方法が不明のものばかりなのでプログラムで出力しようと思いあれこれ調べたのでメモ。

Unicodeエスケープ

Unicodeエスケープを使えばソースコード上に文字コードで直接記述できます。例えば垂直タブなら文字コードは0x000bなのでこうなります。

String s = "\u000b"; // 垂直タブ

でもこうして制御文字全部をべた書きするのは手間なのでもっとクールな方法を考える。

まずはUnicodeエスケープを "\u" と "00xx" に分離できないかと試したけどコンパイル通らず。\uの後にはかならずUnicodeを示す数値が続かねばならないらしい。なら"\\u"でエスケープしたらと思ったけどこれじゃあUnicodeエスケープ自体が無効化されてしまうので意味が無い。ということでUnicodeエスケープを使っての動的生成はあきらめる。

CharacterクラスのtoCharsメソッド

きっと文字コードを文字に変換してくれるメソッドがあるはず、と探してみたら見つかった。CharacterクラスのtoCharsメソッド。

引数にint型で文字コード(コードポイント)を指定できるのでループさせるなどあれこれできて便利です。