Groovy2系の文字列リテラルは\u0000
のように\u
に続けて4桁の数字でUnicodeエスケープされます。
このUnicodeエスケープは文字列リテラルだけではなく困った事にコメントにも適用されます。なので例えば以下のようなコメントを書くとエラーになります。
// C:\upload
この動作は以下のバグレポートによるとバージョン2系のパーサーはunicode readerでソースコードを読み込むので発生するとコメントされていました。つまり文字列やコメントだけではなくコードすべてに対してUnicodeエスケープしているという事です。
バージョン3系ではパーサーが新しくなりコメントに\u
を含めることができます。またドキュメントから見つけられなかったのですがスラッシュ文字列とドルスラッシュ文字列も\u
はUnicodeエスケープされなくなりました。
とは言え、まだリリースされていないので今はどうにかしてコード中から\u
を取り除く必要があります。
そもそもの発端はUnityでAndroid用にカスタム build.gradle テンプレートを利用してDIR_UNITYPROJECT
をプロジェクトフォルダの絶対パスに置換する機能を使った時にu
で始まるフォルダがあった事が原因でWindowsでエラーが起きた事でした。
Unity2019.1以降ならDIR_UNITYPROJECT
を置換する時にパス区切り文字をエスケープして\\
で出力するのでこの変数で問題は起きないようです。
Top comments (0)