【问题标题】:Eclipse UTF-8-weird charactersEclipse UTF-8 奇怪的字符
【发布时间】:2013-06-02 10:00:52
【问题描述】:

我正在使用 Eclipse IDE 用 java 编写程序,我想用希腊语编写我的 cmets。所以我将编码从 Window->Preferences->General->Content Types->Text->Java Source File 更改为 UTF-8。我的代码中的 cmets 没问题,但是当我运行我的程序时,一些单词包含奇怪的字符,例如 San Germ�n (San Germán)。如果我将编码更改为 ISO-8859-1,当我运行程序时一切正常,但我的代码中的 cmets 不是(奇怪的字符!)。那么,它出了什么问题呢?

编辑:我的程序在 java swing 中,带有 UTF-8 的奇怪字符是 JTable 单元格中的字符串。

EDIT(2): 好的,我解决了我的问题,我为 java 文件保留了 UTF-8 编码,但我更改了字符串的编码。 String k = new String(myStringInByteArray,ISO-8859-1);

【问题讨论】:

  • “圣日耳曼”在哪里?在评论中?在字符串文字中?在属性文件中?在文本文件中?
  • 它在 JTable 的单元格中!(不在 cmets 中)
  • 问题是:字符串从哪里来。 Is 在您的源代码中被硬编码为字符串文字,或者您是从文件中读取它,还是从数据库中读取它,然后再将其显示在您的 JTable 中。向我们展示您的源代码。
  • 你确定这些字符是 UTF-8 吗?也许它们是 UTF-16。既然你找到了有效的编码,那就别管它了。
  • 所以你是说你的Java源文件的编码改变了从数据库中读取的字符串在屏幕上的显示方式?这是非常令人惊讶的。最后,无论源文件的编码是什么,字节码都应该是相同的。 “读取数据库文件”是什么意思?我再说一遍:向我们展示你的源代码。

标签: java eclipse swing encoding utf-8


【解决方案1】:

这很可能是由于编译器在读取您的源代码时没有使用正确的字符编码。这是在系统之间移动时非常常见的错误来源。

解决它的典型方法是使用纯 ASCII(在 Windows 1252 和 UTF-8 中相同)和“\u1234”编码方案(unicode 字符 0x1234),但处理起来有点麻烦Eclipse(我上次查看)并没有透明地支持这一点。

属性文件编辑器可以,但是,一个合理的建议可能是将所有字符串放在一个属性文件中,并在需要显示字符串时将它们作为资源加载。这也是对 Locales 的一个很好的介绍,当您希望您的应用程序能够说一种以上的语言时,需要这些语言环境。

【讨论】:

    猜你喜欢
    • 2014-11-19
    • 2013-10-16
    • 1970-01-01
    • 1970-01-01
    • 2012-03-20
    • 1970-01-01
    • 2021-08-27
    • 2011-04-14
    相关资源
    最近更新 更多