[英]How to get the real characters from its raw utf format in Java
我有一些这样编码的中文字符:
String b = "\\u91d1\\u5143\\u6bd4\\u8054\\u6210\\u957f\\u52a8\\u529b";
如何将字符串b更改为实字符,我发现在控制台中将其输出时可以显示以下c,那么问题是如何将字符串b更改为c?
String c = "\u91d1\u5143\u6bd4\u8054\u6210\u957f\u52a8\u529b";
如果字符串中确实包含双斜杠,那么您将不得不手动扫描字符串,将每个“ \\ uXXXX”序列解码并替换为其实际的UTF-16表示形式。 例如(未测试):
StringBuilder buf = new StringBuilder();
char c[2];
for (int i = 0; i < b.length(); i += 7)
{
int tmp = Integer.parseInt(b.substring(i+3, i+7), 16);
if (tmp < 0x1000)
{
c[0] = (char) tmp;
c[1] = 0;
}
else
{
tmp -= 0x10000;
c[0] = (0xD800 | ((tmp & 0xFFC00) >> 10));
c[1] = (0xDC00 | (tmp & 0x3FF));
}
buf.append(c, 2);
}
b = buf.ToString();
有人发布了一个棘手的解决方案,但对我来说似乎很有益:
b="abc="+b;
Properties props = new Properties();
props.load(new StringReader(b));
b=props.getProperty("abc");
System.out.println(b);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.