2013-05-06 139 views
0

美好的一天。如何轉換成西里爾文

我從服務器

\u041a\u0438\u0441\u0435\u043b\u0435\u0432 \u0410\u043d\u0434\u0440\u0435\u0439 

我需要將其轉換成斯拉夫語CP-1251字符串,字符串了這樣。

我該怎麼做?謝謝。

回答

1

如果這是一個必須的解碼字符的文本序列,你首先需要的是這樣開始(假設你的輸入字符串中輸入):

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()); 
+0

它didn't幫助。字符集將輸入字符串的每個字符轉換爲字節。所以\ u041a轉換成6個字節,但它必須轉換成2個字節04 + 1a。 – user2160696 2013-05-07 06:20:26

+0

對不起,我以爲那是你展示的一個java字符串表示 - 我沒有意識到它是一個字面序列。已經更新了我的答案。 – 2013-05-07 12:49:04

+0

哇。這太奇怪了 - 這麼簡單的任務需要一個複雜的技巧。謝謝 - 你讓我的一天... – user2160696 2013-05-07 18:42:49