Java AndroidSutdio“;臭虫:无法在调试或android布局(Windows)中正确查看外部UTF8字符串

Java AndroidSutdio“;臭虫:无法在调试或android布局(Windows)中正确查看外部UTF8字符串,java,string,encoding,utf-8,android-studio,Java,String,Encoding,Utf 8,Android Studio,我无法在AndroidSutdio调试或android布局中正确查看我的UTF8字符串。 下面是我的代码: String test1 = "hélǐ"; 字符串test1=“hélǐ”; 结果是test1=hélÇ� test1看起来类似于在记事本++中使用ANSI编码读取我的UTF8字符串。但是,如果我直接将其编码到XML布局中(而不是使用Button.setHint()方法),我可以正确地看到hélǐ 更新1:感谢Jon Skeet指出test1.lenght()=6而不是4,因

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

String test1 = "hélǐ"; 字符串test1=“hélǐ”; 结果是test1=hélÇ�

test1看起来类似于在记事本++中使用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和androiddx编译器中,我添加了-编码utf8
  • 在我的AndroidStudio中,所有文件编码都设置为utf8(我可以在右下角看到utf8)
  • defaultCharset()返回utf8
  • InputStreamReader.getEncoding()返回utf8
  • 我所有的xml布局顶部都有一个utf8标志
  • 记事本++使用utf8编码正确读取我的复制/粘贴“hélǐ”
      • 也请尝试
        h\u00e9l\u012d
        。这消除了java源代码编码的因素
      • 尝试将文本写入文件:

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

      那么原因就应该更清楚了

      由于编辑器和编译器必须使用相同的编码,您似乎已经为其余部分做了所有可能的事情。特别是使用记事本++(-JEdit也是可能的)。一个小问题是IDE后台编译和最终编译

      控制台也在运行:控制台可能会错误地使用操作系统编码

      所有这些
      新字符串(…)
      都是超级错误的。在这里不要使用它,因为一个错误确实可以消除编辑器和编译器编码不匹配之间的错误


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

      在最新版本的AndroidStudio中修复了我的情况,我的情况与Simon完全相同(我正在使用Android Studio for Mac 0.2.2)

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

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

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

      我觉得你试图将编码传递给编译器的过程似乎不起作用。请尝试
      -编码UTF-8
      。。。虽然我认为如果你给它一个错误的编码,它会完全失败。您不应该执行任何
      test2
      test5
      的操作。。。“转码”字符串几乎总是一个坏主意。谢谢。我尝试改为UTF-8而不是utf8,但得到了相同的结果。我不喜欢使用转码,但现在我只想让它工作……要删除它的显示部分,您可以只打印出
      test1.length()
      ——显然应该是4。如果你确定你的源代码是UTF-8,你应该仔细检查所有的编译器设置,因为这可能就是问题所在。这是个好主意。test1.length()返回6。确认这不是一个显示问题。嗨,西蒙,我已经详细了解了这个问题。如果你能解决这个问题。请告诉我。非常感谢你。我也在努力解决这个问题。谢谢,谢谢。String test7=“h\u00e9l\u012d”返回正确答案。但是您所说的java源代码编码是什么意思呢?是javac吗?是.java文件本身加载了错误的编码吗?我不确定谁在做什么,谁的错是\u00e9起作用而不是。这是编辑器编码。正如您所做的,使用能够设置不同编码的编辑器,可以独立于IDE进行检查。正如您所做的(至少是有意的),我使用UTF-8,否则就不能使用像
      这样的国际文本。编辑器写入磁盘上的一些编码,
      javac-encoding UTF-8…
      然后将使用假定的编码。再次检查设置(全局,每个项目)。7.3版的NetBeans IDE将这些设置统一到一个单独的设置中。是的,我已经将我的代码复制粘贴到eclipse上的一个相当于android的项目中,效果很好。因此,这一定是与AndroidStudio相关的问题。然而,我明确地将everywhere设置为在AndroidStudio中使用UTF-8——我花了数小时到处检查。当我用notepad++打开java文件时,我可以确认它的UTF-8。不过,我似乎看不到有效的javac命令。也许命令行参数有助于
      -Dfile.encoding=UTF-8
      。祝你好运,谢谢。我添加了一个变量环境,该环境表示强制javac使用该参数。JAVA_工具_选项=-Dfile.encoding=UTF-8。不幸的是没有太多的变化。对我来说似乎不是这样吗?在刚刚更新的2.2版上,我仍然有问题。还添加了编译器参数。0.2.9问题仍然存在。不适用于Android Studio 0.8。它说Compile已被弃用。