如何在Java/Eclipse中使用特殊字符

26

我该如何在Java/Eclipse中使用/显示像♥、♦、♣或♠这样的字符?

当我尝试直接使用它们,例如在源代码中,Eclipse无法保存该文件。

我该怎么办?

编辑:我该如何查找Unicode转义序列?


你可以随时按下Alt+数字键盘上的数字,只要知道ASCII表就行了。 - Ariel Pinchover
8个回答

37

问题在于你使用的字符无法在文件设置的编码(Cp1252)中表示。我认为你基本上有两个选择:

选项1:更改编码。根据IBM文档,你应该将编码设置为UTF-8。我认为这可以解决你的问题。

  • 将全局文本文件编码首选项 Workbench > Editors 设置为 "UTF-8"。
  • 如果需要其他编码,请在单个文件上设置编码,而不是使用全局首选项设置。使用 File > Properties > Info 菜单选项设置单个文件上的编码。

选项2:删除不受"Cp1252"字符编码支持的字符,你可以使用Unicode转义序列 (\uxxxx)替换不支持的字符。虽然这样可以让你保存文件,但并不一定是最佳方案。

对于你在问题中指定的字符,这里是Unicode转义序列:

♥ \u2665
♦ \u2666
♣ \u2663
♠ \u2660

1
我认为第二个选项更可取,因为它使得文件在不同的源编码之间更具可移植性。当然,这取决于字符出现的位置(字符串文字?注释?README文件?)。 - McDowell
5
我认为第一种选择更好,因为任何使用非UTF-8编码(特别是使用国家特定编码)的源文件的人都需要帮助。 :) - Cowan
2
Java源文件默认情况下被视为操作系统编码(在Windows上是一些8位CP;在Linux上是UTF8)。如果不写ASCII,就需要确保开发人员在编译之前知道这一点,并且如果他们不知道,可能会引入错误。国际化(I18N)相关的内容应该放在属性文件中(根据定义应该是UTF8编码)。 - McDowell
你真是个了不起的家伙。 - Shishir Shetty
+1;为了避免查找每个字符的代码点,可以使用AnyEdit Eclipse插件。有关详细信息,请参见我的答案。 - Piotr Findeisen

22
在Eclipse中:
  1. 转到窗口->首选项 ->常规 ->工作区 ->文本文件编码
  2. 将其设置为UTF-8

10

可以通过在Eclipse中设置编码方式来解决这个问题:

第一种方式:

在菜单中选择“文件-->属性”,然后在“文本文件编码”部分:选择“其他”选项,从下拉框中选择UTF-8 -> 最后点击“确定”按钮。

第二种方式:

右键单击特定的文件(例如Test.java)-> 属性。 在“文本文件编码”部分:选择“其他”选项,从下拉框中选择UTF-8 -> 最后点击“确定”按钮。

第三种方式:

如果您想为所有项目进行此更改,请前往“窗口-->首选项-->常规-->工作区”。 在“文本文件编码”部分:选择“其他”选项,从下拉框中选择UTF-8 -> 最后点击“确定”按钮。


2

稍微扩展一下@Joe Lencioni的答案

你可以使用AnyEdit Eclipse插件(可以从Eclipse市场安装)来将Unicode文本轻松转换为Java Unicode转义:

  • 选择包含非ASCII字符的字符/文本
  • 右键单击
  • Convert > To Unicode Notation

一个小问题是,AnyEdit想要先保存文件,这显然被Eclipse禁止,直到你修复了你的文本。


2

要解决这个问题,你可以选择更改编码方式为UTF-8等能够处理该字符的编码方式,或者查找相关的Unicode编号并使用\uxxxx转义序列来表示它。


2
找到Unicode转义序列:请参阅这些Unicode图表。您的字符位于Misc. Symbols图表中,\u2660及以上。

0

Windows 菜单 -> 首选项 -> 通用(展开) -> 工作区(点击它)。 寻找一个名为“文本文件编码”的框。默认值为“Cp1252”。 更改单选按钮以选择其他,并从组合框中选择“UTF-8”。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接