UnicodeエスケープされたJavaプロパティファイルをsedとnkfで読めるようにする
native2ascii無き現代に.propertiesの化石と向き合う
もう2022年なのでnative2asciiはJDKに同梱されなくなっているわけですが、一方で目の前にはUnicodeエスケープされた.properties
ファイルが。
手元にはnative2asciiなんぞ無いので、sedとnkfでなんとかしましょう。
環境
こうする
$ cat example.properties | sed -E 's/\\u([0-9A-z]{4})/\&#x\1;/g' | nkf --numchar-input
例えばこんな感じの example.properties
なら…
$ cat example.properties # example.properties FOO=\u3075\u30FC BAR=\u3070\u30FC
こうなる
$ cat example.properties | sed -E 's/\\u([0-9A-z]{4})/\&#x\1;/g' | nkf --numchar-input # example.properties FOO=ふー BAR=ばー
ポイント
Unicodeエスケープされた文字列のデコードには、nkfの --numchar-input
オプションが使える。
しかしこのコマンドで受け付けるのは &#XXXX;
のような形式。
Javaのプロパティファイルは \uXXXX
の形式でエンコードされているので、sedで \uXXXX
を &#xXXXX;
に置換してから nkf
に渡す。