UTF-8字符中的字符常量无效

时间:2012-04-21 18:36:00

标签: java character-encoding

我正在尝试将“o͝”(一个语音字符)分配给Java程序中的一个字符,但是我收到错误“无效的字符常量”。我的文件使用UTF-8和其他语音字符工作正常,但不是这个。看起来这个角色实际上是两个(一个'o'和一个连字或类似的东西),但我不能打破它正在形成的部分。

代码示例:

Character test = 'o͝';

任何帮助都将不胜感激。

4 个答案:

答案 0 :(得分:4)

该字形被称为“带有combining double breve的小写字母o”,并且可以在源代码中写为;

String a = "\u006f\u035d";

由于它是一个组合字符(即两个字符),因此无法将结果值分配给单个Java字符,您需要使用字符串。

答案 1 :(得分:2)

您可以尝试查看字符表中字符的编号并将其分配给变量,例如:

char a = '\u0040';

答案 2 :(得分:0)

正如已经说过的,你不应该硬编码这样的字符,你应该使用这里找到的unicode点值:

http://www.utf8-chartable.de/

你想要的实际上涉及“结合角色”:

http://en.wikipedia.org/wiki/Combining_character

组合变音标记为0x0300 - 0x036f。因此,例如,要创建您想要的角色(双精灵'o'),请使用:

String o_doubleBreve = "o\u035d";

打印为o͝

答案 3 :(得分:0)

我同意上述答案,即在您编写的任何新代码中给出\ u表示最佳,但是会遇到源代码存在此问题并且据称他们能够执行的项目编译他们的代码。我现在正在使用的一个例子是openNLP

如果您遇到类似这样的事情,您会发现当您在像Eclipse这样的IDE中运行时,如果您遵循this之类的过程,则可以将工作区默认表示更改为UTF-8。这将允许成功编译代码。