4

我无法在 AndroidSutdio 调试或 android 布局中正确查看我的 UTF8 字符串。下面是我的代码:

       字符串 test1 = "hélǐ";

结果是 test1 = hélÇ�

test1 看起来类似于在 notepad++ 中使用 ANSI 编码读取我的 UTF8 字符串。但是,如果我直接将其编码到 XML 布局中(而不是使用 Button.setHint() 方法),我可以正确看到 hélǐ。

更新 1:感谢 Jon Skeet 指出 test1.lenght() = 6 而不是 4 因此不是显示问题。更新 2:感谢 Joop Eggen 指出“h\u00e9l\u012d”返回正确答案 更新 3:我已将我的代码复制粘贴到 eclipse 上的等效 android 项目中,它工作正常。因此它必须是与 AndroidStudio 相关的问题。更新 4:添加了一个变量 JAVA_TOOL_OPTIONS = -Dfile.encoding=UTF-8 以强制 javac 使用该命令,但对结果没有影响。更新 5:我在 ubuntu 上安装了 AndroidStudio 并复制粘贴我的代码,它在那里运行良好。但是如何在 AndroidStudio Windows 上修复它?(不幸的是我需要使用Windows)

以前有人遇到过这个问题吗?如何在不使用 \u 代码的情况下进行修复 谢谢

笔记:

  • 我正在使用 AndroidStudio
  • 在我的 Javac 和 Android DX 编译器中,我添加了 -encoding utf8
  • 在我的 AndroidStudio 中,所有文件编码都设置为 utf8(我可以在右下角看到 utf8)
  • Charset.defaultCharset() 返回 utf8
  • InputStreamReader.getEncoding() 返回 utf8
  • 我所有的 xml 布局顶部都有一个 utf8 标志
  • Notepad++ 使用 utf8 编码正确读取了我的复制/粘贴“hélǐ”。
4

3 回答 3

1

我的情况和 Simon 完全一样(我使用的是 Android Studio for Mac 0.2.2)

我通过编辑/src 文件夹下的build.gradle文件解决了这个问题,添加了以下几行:

tasks.withType(Compile) {
    options.encoding = 'UTF-8'
}

它对我有用。希望它可以帮助有同样问题的人。

于 2013-07-31T10:28:44.680 回答
1
  • 也试试h\u00e9l\u012d。这消除了 java 源编码的因素。
  • 尝试将文本写入文件:

    新的 OutputStreamWriter(新的 FileOutputStream(文件),“UTF-8”)

那么原因应该会变得更清楚。

由于编辑器和编译器必须使用相同的编码,您似乎已经为其余的事情做了所有可能的事情。尤其是使用 NotePad++ 进行检查(也可以使用 JEdit)。一个小点是IDE后台编译和最终编译。

同时运行的是一个控制台:控制台可能错误地使用了操作系统编码。

所有这些new String(...)都是多余的和错误的。不要在这里使用它,因为确实一个错误可以消除编辑器和编译器的编码不匹配之间的错误。

(在 ISO-8859-1 ĭ(i-breve) 中不可用 - 因此 test3。)

于 2013-05-26T09:53:09.597 回答
0

已在最新版本的 AndroidStudio 中修复

于 2013-05-31T09:17:11.887 回答