2013-01-21 30 views
-1

我试图打印与Unicode字符串“\u65e5\u672c\u8a9e\u6587\u5b57\u5217保留在Java中的Unicode

我怎样才能打印相同的? Java将上面的字符串转换为不可读的格式,就好像它将unicode的默认字符转换一样。我怎样才能避免它发生?

我在OS X上运行它

EDIT1:请提供一个解决方案,无需添加反斜杠

+0

你想打印'\ u65e5 ...'或相应的Unicode字符? – Ingo

+0

我只是想要上面提到的字符串按原样打印。 Java倾向于直接将其转换为字符串。 – AkD

+1

它不“倾向于”。这就是您如何在Java源代码中指定Unicode文字。 – Isaac

回答

3

如果你想打印正是那么你需要逃避你反斜线:

\\u65e5\\u672c\\u8a9e\\u6587\\u5b57\\u5217 

编辑︰如果这不正确,或者即使它,检查出this answer - escapeJava从Apache公用事业听起来像它可能是你在找什么。或者可能是escapeHtml方法之一?我不完全确定escapeJava是否适用于unicode。

+0

这个答案是错误的。没有反斜杠。 OP有一个unicode字符串,并且想要打印它的编码版本。 –

+0

@DmitryBeransky他呢?这不是我读这个问题的方式,他还没有回应Ingo的评论 - 如果他说这不是他想要的,我会很乐意删除答案。 – Jeff

+0

@Jeff那么你已经修改了字符串。我有这样的格式数以百万计的记录。在所有字符前添加反斜杠并不可行。我们有办法让java停止转换unicode – AkD

0

逃不出你的反斜线

String s = "\\u65e5\\u672c\\u8a9e\\u6587\\u5b57\\u5217"; 
0

一个可以做的字符串中的每个字符ch如下:

int c = ch; 
    printf("\\u%04x", c);