找到非英语字符的unicode

时间:2010-01-17 06:51:00

标签: java unicode

我必须在Java程序中打印非英语字符串。我有我的字符串。如何获取其组成字符的unicode,以便将字符串嵌入程序中?

4 个答案:

答案 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',但这是一个明智的起点。