【发布时间】:2013-05-06 20:18:27
【问题描述】:
美好的一天。
我从服务器得到这样的字符串
\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439
我需要将其转换为西里尔文 cp-1251 字符串。
我该怎么做?谢谢。
【问题讨论】:
标签: java string type-conversion decode
美好的一天。
我从服务器得到这样的字符串
\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439
我需要将其转换为西里尔文 cp-1251 字符串。
我该怎么做?谢谢。
【问题讨论】:
标签: java string type-conversion decode
如果这是一个必须解码的字符序列,你需要首先从这样的东西开始(假设你的输入在字符串 input 中):
StringBuffer decodedInput = new StringBuffer();
Matcher match = Pattern.compile("\\\\u([0-9a-fA-F]{4})| ").matcher(input);
while (match.find()) {
String character = match.group(1);
if (character == null)
decodedInput.append(match.group());
else
decodedInput.append((char)Integer.parseInt(character, 16));
}
此时,您应该在 decodedInput 中有输入的 java 字符串表示。
如果您的系统支持 cp-1251 字符集,您可以使用以下方式将其转换为 cp-1251:
Charset cp1251charset = Charset.forName("cp-1251");
ByteBuffer output = cp1251charset.encode(decodedInput.toString());
【讨论】: