给出这个枚举类型:
public enum PackageType {
BEHAELTER("BH", "Behälter")
String value;
String id;
String description;
PackageType(String id, String description) {
this.id = id;
this.description = description;
}
}
使用此枚举时,Behälter中的变音符号“ä”显示错误。即使我在构造函数中调试并观察属性“description”,我也看错了。
是否有Java规范禁止像这样的构造中的任何特殊字符?在这一点上我很无能为力。
我注意到在将此枚举序列化为JSON并将其返回到我的前端时。
谢谢
答案 0 :(得分:7)
这与枚举无关 - 如果您只有这样的控制台应用程序,您可能会看到同样的事情:
public class Test {
public static void main(String[] args) {
String x = "Behälter";
System.out.println((int) x.charAt(3));
}
}
可能出现的问题:
第一种选择是最可能的,说实话。如果是这种情况,则很容易测试 - 将字符串更改为"Beh\u00e4lter"
- 您感兴趣的字符是U + 00E4,因此Unicode转义允许您在字符串文字中表达它而不会超出ASCII实际的源代码。
如果确实有效,那么您可以回到之前的代码,但检查源文件实际保存的方式,以及编译器选项的含义。 (我个人建议使用UTF-8作为完全Unicode,支持良好的编码。)