将String中的unicode转换为char

时间:2012-08-11 11:09:54

标签: java string unicode

这是一个基本问题,但我在SA上找不到完全相同的内容:

我有这个字符串:

String s = "surname\":\"B\\u00f6rner\"},{\"forename\""

我想得到的是:

String s = "surname\":\"Börner\"},{\"forename\""

用Java做任何事吗? THX!

4 个答案:

答案 0 :(得分:1)

手动删除反斜杠将使Java解释unicode。如果您无法修改从API调用中收到的字符串,则可以使用:

s = s.replaceAll("\\\\u00f6", "\u00f6");

答案 1 :(得分:1)

    String s = "surname\":\"B\u00f6rner\"},{\"forename\"" ;
    try {
        String t = URLDecoder.decode(s, "UTF-8") ;
        System.out.println(t) ;
    }
    catch( Throwable t ) {
        t.printStackTrace(System.err) ;
    }

输出:surname":"Börner"},{"forename"

你必须找到一种方法来删除额外的\,正如其他人所说。

答案 2 :(得分:1)

只要您不需要Unicode基准平面之外的字符,这应该不是很困难:

final Matcher m = Pattern.compile("\\\\u(.{4})").matcher(
    "surname\":\"B\\u00f6rner\"},{\"forename\"");
final StringBuffer b = new StringBuffer();
while (m.find())
  m.appendReplacement(b, String.valueOf(((char)Integer.parseInt(m.group(1), 16))));
m.appendTail(b);
System.out.println(b);

答案 3 :(得分:0)

如果那是Java源代码,那么两个字符串文字意味着完全相同的东西......前提是(在后一种情况下)你告诉Java编译器源文件编码的字符集。或者,{ {3}}命令(使用-reverse命令)可用于将文件中的\uxxxx unicode转义转换为本机字符。

如果这些字符串值实际上是String值,而不是String文字,那么您将需要进行某种运行时转换。 (我确信有第三方库方法可以做到这一点......)

相关问题