如何转换成西里尔文

时间:2013-05-06 20:18:27

标签: java string type-conversion decode

美好的一天。

我从服务器

获得了这样的字符串
\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439

我需要将其转换为西里尔文cp-1251字符串。

我该怎么做?谢谢。

1 个答案:

答案 0 :(得分:1)

如果这是一个必须解码的文字字符序列,你需要先从这样的东西开始(假设你的输入在字符串 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));
}

此时,您应该在 decodingInput 中输入输入的java字符串。

如果您的系统支持cp-1251字符集,则可以使用以下内容将其转换为cp-1251:

Charset cp1251charset = Charset.forName("cp-1251");
ByteBuffer output = cp1251charset.encode(decodedInput.toString());