繁体   English   中英

找到非英语字符的unicode

[英]finding unicode for non-english characters

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

你在哪个代码页中有那个字符串? Java源代码可以是任何编码,因此您可以将该字符串放在源代码中,并使用编译器选项来设置代码页。 请参见NetBeans - >项目节点 - >属性 - >源 - >编码。

源文件使用“MacRoman”进行编码(从项目属性 - >资源 - >文本文件编码中找到)。 我将其更改为“UTF-8”,然后尝试将实际的非英语字符串嵌入到程序中并尝试打印。 有效。

您可能在保存或编译期间损坏数据。 源代码不带任何内在的编码信息,因此很容易破坏包含基本“ASCII”范围之外的字符的字符串文字。 考虑在源文件中使用Unicode转义序列以避免此问题。 您要么这样做,要么确保任何与源接触的人始终适当地处理它 - 第一种方式更容易。

如果这是用于商业应用程序,请考虑将字符串外部化为资源文件。

如前所述,您可以直接在源文件中编写包含无法在传统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));
    }
  }
}
python -c "print repr('text goes here'.decode('utf-8'))"

它可能并不总是'utf-8' ,但这是一个明智的起点。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM