我必须在Java程序中打印非英语字符串。我有我的字符串。如何获取其组成字符的unicode,以便将字符串嵌入程序中?
答案 0 :(得分:3)
你在哪个代码页中有这个字符串? Java源代码可以是任何编码,因此您可以将该字符串放在源代码中,并使用编译器选项来设置代码页。请参见NetBeans - >项目节点 - >属性 - >来源 - >编码
答案 1 :(得分:2)
源文件使用“MacRoman”进行编码(从Project Properties - > Resource - > Text file encoding)中找到。我将其更改为“UTF-8”,然后尝试将实际的非英语字符串嵌入到程序中并尝试打印。它奏效了。
您可能在保存或编译期间损坏数据。源代码不带任何内在的编码信息,因此很容易破坏包含基本“ASCII”范围之外的字符的字符串文字。请考虑在源文件中使用Unicode escape sequences以避免此问题。 您要么这样做,要么确保任何与源接触的人始终适当地处理它 - 第一种方式更容易。
如果这是针对商业应用程序,请考虑将字符串外部化为资源文件。
答案 2 :(得分:1)
如前所述,您可以直接在源文件中编写包含无法在传统ISO-8859-1或US-ASCII字符集中编码的字符的字符串。您需要确保IDE将文件保存为UTF-8。并且,您可能需要在javac命令中添加“-encoding UTF-8”以确保javac正确读取它。
但我认为你想知道如何使用“\ uXXXX”语法嵌入字符串,或许是为了避免源文件编码的任何问题。这个简短的代码片段可能适合您;它粗略地假设任何UTF-16值超过255的字符都需要转义。
public static void main(String[] args) {
String s = args[0];
for (int i = 0; i < s.length(); i++) {
char c = s.charAt(i);
int value = (int) c;
if (value < 256) {
System.out.print(c);
} else {
System.out.print("\\u" + Integer.toHexString(value));
}
}
}
答案 3 :(得分:0)
python -c "print repr('text goes here'.decode('utf-8'))"
它可能并不总是'utf-8'
,但这是一个明智的起点。