2017-06-19 3 views
0

中のstrings.xml結果からgradle.propertiesで日本語/中国語の文字列を参照:私はstring.xmlをから次のようGradleの変数を参照しています不明な行動

gradle.properties

APP_NAME_JAPANESE="日本語" 

build.gradle

resValue 'string', 'APP_NAME_JAPANESE', APP_NAME_JAPANESE 

のstrings.xml

我々はcharatersがunreadablesある見ることができるように

生成されたファイルgenerated.xmlは、次の文字列

<string name="APP_NAME_JA" translatable="false">"ã¢ãã¿ã¼ãã«ã¹"</string>

を持っています。

すべてのファイルはUTF-8でエンコードされています。

変数をgradle.propertiesに入れるのではなく、build.gradle resValue 'string', 'APP_NAME_JAPANESE', "日本語"に直接入れると、すべて正常に動作しています。

これはgradleシステムのバグでしょうか?あなたが明示的にUTF-8のファイルとしてそれらを解析しない限り、定義上

答えて

0

私はエンコードを変更しようとしましたが、同じ問題が発生しています。

は最後に、私は、base64形式で文字列を設定して、この

resValue 'string', 'APP_NAME_JA', new String(APP_NAME_JA.decodeBase64(), "UTF-8") 
ようbuild.gradle内の文字列をデコードすることを決定しました
0

のJava propertiesファイルは、UTF-8でエンコードないです。

デフォルトでは、範囲外の文字に対してUnicodeエスケープでエンコードされたISO-8859-1です。

プロパティファイルを修正すると、すべてが魅力的に機能します。

アンドロイドを使用しているので、あなたはAndroidスタジオを使用していると思いますが、これは専用のIntelliJ IDEAです。そこでは、トランスペアレントなnative-to-asciiエスケープを使用して、プロパティファイルのエンコーディング設定をISO-8859-1に変更することができます。これにより、エディタでUTF-8グリフを見ることができますが、ファイルは必要に応じてUnicodeエスケープとともに自動的に保存されます。また、実際のビルドを開始する前に、UTF-8でエンコードされたプロパティファイルのnative2asciiツールを使用してその変換を行うこともできます。しかし、実際には、プロパティファイルを扱うことができるほとんどのツールが期待している適切なエンコーディングを使用することをお勧めします。

関連する問題