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

时间:2009-09-10 00:46:40

标签: java unicode

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

“\ u00a5123”

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

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

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

4 个答案:

答案 0 :(得分:16)

我写了一个小程序:

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

它是输出:

  

¥123

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

编辑:

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

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

可以用以下内容替换上述内容:

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);
    }
}