Java 将字符串文字unicode打印为实际字符
在我的Java应用程序中,传递给我的字符串如下所示: “\u00a5123” 在控制台中打印该字符串时,我得到与输出相同的字符串(如预期) 但是,我想通过将unicode转换成实际的日元符号(\u00a5->日元符号)来打印出来-我将如何执行此操作Java 将字符串文字unicode打印为实际字符,java,unicode,Java,Unicode,在我的Java应用程序中,传递给我的字符串如下所示: “\u00a5123” 在控制台中打印该字符串时,我得到与输出相同的字符串(如预期) 但是,我想通过将unicode转换成实际的日元符号(\u00a5->日元符号)来打印出来-我将如何执行此操作 i、 e.看起来是这样的:“[yen symbol]123”我写了一个小程序: public static void main(String[] args) { System.out.println("\u00a5123"); } 它的输出
i、 e.看起来是这样的:“[yen symbol]123”我写了一个小程序:
public static void main(String[] args) {
System.out.println("\u00a5123");
}
它的输出:
人民币123元
i、 它输出的正是你在帖子中所说的内容。我不确定是否还有其他事情发生。您使用的是什么版本的Java
编辑:
对于您的澄清,有两种不同的技术。最简单的方法是查找一个“\u”,后跟4个十六进制代码字符,提取该字符并用unicode版本替换为十六进制代码(使用字符类)。当然,这假定字符串前面没有\u
我不知道有哪种特定的系统能够像解析编码的Java字符串一样解析字符串。您可能需要为这些字符串编写解析,除非您可以在第三方库中找到解析。JDK中没有任何东西可以为您解析这些,我知道,因为我最近有了一个想法,可以使用这种转义通过一个只有拉丁语1的数据库走私unicode。(顺便说一句,我最后做了别的事情)
我将告诉您,在读取和写入文件时,java.util.Properties以这种方式转义和取消转义Unicode字符(因为文件必须是ASCII)。它用于此目的的方法是私有的,因此您不能调用它们,但您可以使用JDK源代码来激发您的解决方案。如前所述,必须解析这些字符串才能获得所需的结果
\u63A5\u53D7=>{“63A5”,“53D7”}
String hex = "63A5";
int intValue = Integer.parseInt(hex, 16);
System.out.println((char)intValue);
可以用以下内容替换上述内容:
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);
}
}
publicstaticvoid打印框()
{
for(int i=0x2500;iYou说直接打印字符串将获得正确的输出是正确的。但是,有人向我传递了一个本质上是转义的字符串。因此,假设主方法仍然存在,但您调用了一个名为foo的方法,如下所示:foo(\\u00a5123”);反斜杠转义是只有Java编译器才需要处理的事情,而不是JVM或API。因此,发现在运行时没有一种简单的方法来解析此类字符串并不奇怪。@Todd同意-关于我唯一能想到的另一件事是尝试以某种方式使用编译器-但这听起来像是麻烦le对我来说。那么,为了更好地了解问题空间,是否没有办法获得一个合适的unicode字符串?使用的是什么上下文?时间/速度是否是一个重要的考虑因素?还有,是否有任何简化的假设?例如,这是唯一一次“\u#####”吗会发生吗?因为这样您就可以使用正则表达式来提取数字。当通过groovy运行java程序时,可能需要重复此操作,因为groovy对$
的解释不同。因此我使用System.out.println(“\u0024”)
有点复杂,但您可能会将字符串作为值发送到内存中的属性文件,然后使用属性
类读取它。