将unicode的ASCII表示形式转换为unicode

时间:2015-03-06 17:41:11

标签: java unicode non-ascii-characters

我有一个应用程序,可以通过JSON获得som Strings。

问题在于我认为他们是以ASCII格式发送的,文本确实应该是unicode。

例如,字符串的某些部分是“\ u00f6”,这是瑞典字母“ö”

例如瑞典语中的“buy”是“köpa”,我得到的字符串是“k \ u00f6pa”

在java中收回此字符串以将其转换为正确的表示形式后,对我来说有一种简单的方法吗?

也就是说,我想将“k \ u00f6pa”等字符串转换为“köpa”

感谢所有帮助!

2 个答案:

答案 0 :(得分:1)

嗯,这很简单,只需使用JSON库即可。以杰克逊为例,你会:

final ObjectMapper mapper = new ObjectMapper();

final JsonNode node = mapper.readTree(your, source, here);

JsonNode实际上是TextNode;您可以将文本检索为:

node.textValue()

请注意,这不是" ASCII表示"字符串;只是碰巧JSON字符串可以包含像这样的UTF-16代码单元字符转义。

(尽管如此,你会丢失这个值的引号,但这可能是你所期望的)

答案 1 :(得分:0)

十六进制代码只是2个字节的整数,int可以处理得很好 - 所以你可以使用Integer.parse(s, 16)其中s是没有{{1}的字符串}} 字首。然后,您只需将"\u"缩小为int即可保证适合。

抛出一些正则表达式(验证字符串并提取十六进制代码),你就完成了。

char
相关问题