Android unicode西里尔字符串转换为СЕРГÐ'Ð〜ЧРÐÐ 在函数中传递

时间:2013-09-26 21:11:55

标签: java android unicode cyrillic

我不知道这是Java问题还是Android问题。但最近我更新了有关Android开发设置的所有内容。

所以我升级了

  • Java到1.7_40 64位(我还安装了1.7_25 32位),
  • Android studio到0.2.10,
  • SDK工具到版本22.2.1,
  • SDK平台工具,版本18.0.1,
  • Gradle 1.7

我的Android应用程序开始表现得非常奇怪。在我的工具更新之前,这行代码完全像预期的那样工作:

Category.getNew(1,"СЕНДВИЧАРА")

现在,在获取新功能的另一面

public static Category getNew(int id, String name){
        Category result = new Category();
        result.setId(id);
        result.setName(name);
        return result;
}

对于name参数我得到这个字符串СЕÐ�ДВИЧÐ�РÐ�这不是我所期望的,我希望我的СЕНДВИЧАРА回来,这个字符串被传递给UI。

我不能让那个神秘的字符串显示在UI上。

请帮忙。

1 个答案:

答案 0 :(得分:4)

好的,我自己找到了解决方案。我会在这里发布答案以供将来参考。

显然我的问题的原因是在Gradle中。这是我第一次使用它,建议使用Android Studio。

我注意到Gradle在构建应用程序时报告问题并不是很好,它会随机显示它们。在构建应用程序的某个时刻,我注意到了这个错误:

Gradle: error: unmappable character for encoding Cp1252

这个错误看起来像是我问题的原因。快速谷歌搜索,我碰到了这篇文章:Get rid of “unmappable character for encoding Cp1252″ once and for all总结说要添加名为 JAVA_TOOL_OPTIONS 的新环境变量,其值为 -Dfile.encoding=UTF8 这样,Java总是使用UTF-8作为默认编码。