私は、Java用に翻訳されたメッセージファイルをチェックするスクリプトに取り組んでいます。私たちのメッセージソースは、フォーマットブロック内でエスケープされていないUnicode文字を許可していません:
{0,number,¤UNESCAPED# ###}
1.9.2p290 :001 > unescaped = "{0,number,¤UNESCAPED# ###}"
=> "{0,number,¤UNESCAPED# ###}"
1.9.2p290 :002 > escaped = "{0,number,\u00A4ESCAPED# ###}"
=> "{0,number,¤ESCAPED# ###}"
エスケープされたものとエスケープされていないものは同じように表示されることに注意してください。
1.9.2p290 :003 > escaped.inspect
=> "\"{0,number,¤ESCAPED# ###}\""
このString.inspect
メソッドは、エスケープされた特殊文字を表示することになっています。
1.9.2p290 :004 > escaped.dump
=> "\"{0,number,\\u{a4}ESCAPED# ###}\""
1.9.2p290 :005 > unescaped.dump
=> "\"{0,number,\\u{a4}UNESCAPED# ###}\""
dump
同じことをすることになっています。
エスケープされたUnicode文字とエスケープされていないUnicode文字を区別する方法を知っている人はいますか?