0
美好的一天。如何轉換成西里爾文
我從服務器
\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439
我需要將其轉換成斯拉夫語CP-1251字符串,字符串了這樣。
我該怎麼做?謝謝。
美好的一天。如何轉換成西里爾文
我從服務器
\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439
我需要將其轉換成斯拉夫語CP-1251字符串,字符串了這樣。
我該怎麼做?謝謝。
如果這是一個必須的解碼字符的文本序列,你首先需要的是這樣開始(假設你的輸入字符串中輸入):
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());
它didn't幫助。字符集將輸入字符串的每個字符轉換爲字節。所以\ u041a轉換成6個字節,但它必須轉換成2個字節04 + 1a。 – user2160696 2013-05-07 06:20:26
對不起,我以爲那是你展示的一個java字符串表示 - 我沒有意識到它是一個字面序列。已經更新了我的答案。 – 2013-05-07 12:49:04
哇。這太奇怪了 - 這麼簡單的任務需要一個複雜的技巧。謝謝 - 你讓我的一天... – user2160696 2013-05-07 18:42:49