打印字符串文字unicode作为实际字符

在我的Java应用程序中,我传递了一个如下所示的字符串:

“\ u00a5123”

将该字符串打印到控制台时,我得到与输出相同的字符串(如预期的那样)。

但是,我想通过将unicode转换为实际的日元符号(\ u00a5 – >日元符号)来打印出来 – 我将如何进行此操作?

即所以它看起来像这样:“[日元符号] 123”

我写了一个小程序:

 public static void main(String[] args) { System.out.println("\u00a5123"); } 

它的输出:

¥123

即它输出的确与您在post中所述的内容完全相同。 我不确定是否还有其他事情发生。 您使用的是哪个版本的Java?

编辑:

为了回应您的澄清,有几种不同的技术。 最简单的方法是查找“\ u”后跟4个hex代码字符,提取该片段并用带有hex代码的unicode版本替换(使用Character类)。 这当然假设字符串前面没有\ u。

我不知道任何特定的系统来解析String,就好像它是一个编码的Java字符串。

如前所述,必须解析这些字符串以获得所需的结果。

  1. 使用\ u作为分隔符对字符串进行标记。 例如: \u63A5\u53D7 => { "63A5", "53D7" }

  2. 处理这些字符串如下:

     String hex = "63A5"; int intValue = Integer.parseInt(hex, 16); System.out.println((char)intValue); 

你可能不得不为这些写一个解析,除非你可以在第三方库中找到一个。 JDK中没有任何内容可以解析这些内容,我知道因为我最近有一个想法是使用这种类型的转义作为通过仅限Latin-1的数据库走私unicode的方法。 (我最后做了别的事btw)

我将告诉你java.util.Properties在读取和写入文件时以这种方式转义和转义Unicode字符(因为文件必须是ASCII)。 它用于此的方法是私有的,因此您无法调用它们,但您可以使用JDK源代码来激发您的解决方案。

可以用以下代替上面的内容:

 System.out.println((char)0x63A5); 

这是打印所有盒子构建unicode字符的代码。

 public static void printBox() { for (int i=0x2500;i<=0x257F;i++) { System.out.printf("0x%x : %c\n",i,(char)i); } }