我通过以下方式引用string.xml中的gradle变量:
gradle.properties
APP_NAME_JAPANESE="日本語"
的build.gradle
resValue 'string', 'APP_NAME_JAPANESE', APP_NAME_JAPANESE
的strings.xml
<string name="app_name">@string/APP_NAME_JAPANESE</string>
生成的文件generated.xml具有以下字符串
<string name="APP_NAME_JA" translatable="false">"ã¢ãã¿ã¼ãã«ã¹"</string>
我们可以看到字符是不可读的。
所有文件都是UTF-8编码。
如果不是将变量放在gradle.properties中,而是直接将它放在build.gradle resValue 'string', 'APP_NAME_JAPANESE', "日本語"
上,一切正常。
这可能是gradle系统中的错误吗?
答案 0 :(得分:0)
根据定义,Java properties
文件是不是 UTF-8编码,除非您将它们显式解析为UTF-8文件。
默认情况下,它们是ISO-8859-1编码的unicode转义符,用于超出该范围的字符。
修复您的属性文件,一切都会像魅力一样。
当您使用Android时,我猜您使用的是Android Studio,它只是一个专门的IntelliJ IDEA。在那里,您可以使用透明的native-to-ascii转义将属性文件的编码设置更改为ISO-8859-1。这允许您在编辑器中查看UTF-8字形,但文件将根据需要自动保存,并使用unicode转义。或者,您可以在开始实际构建之前使用UTF-8编码属性文件上的native2ascii
工具进行该转换。但我真的建议使用适当的编码,大多数可以处理属性文件的工具都可以使用。
答案 1 :(得分:0)
我尝试过更改编码,但仍然会出现同样的问题。
最后我决定以base64格式设置字符串,然后解析build.gradle中的字符串,就像这样
resValue 'string', 'APP_NAME_JA', new String(APP_NAME_JA.decodeBase64(), "UTF-8")