2009-06-09 7 views
1

Я слышал, что существуют неоднозначные сопоставления между Unicode и SHIFT_JIS. This KB article несколько доказывает это.Есть ли проблемы с преобразованием между SHIFT_JIS и кодировками Unicode?

Вопрос в следующем: ли я потеряю любые данные, если я возьму текст, закодированный SHIFT_JIS, преобразует его в Юникод и обратно?

Подробности: Я говорю о Windows (XP и выше) и .NET (который теоретически опирается на NLS API).

ответ

1

Да, это выглядит, как это будет по-прежнему потерять данные:

using System; 
using System.Text; 

class Test 
{ 
    static void Main(string[] args) 
    { 
     Encoding shiftJis = Encoding.GetEncoding(932);   
     byte[] original = new byte[] { 0x87, 0x90 };   
     string text = shiftJis.GetString(original); 
     byte[] backAgain = shiftJis.GetBytes(text);  
     Console.WriteLine("{0:x}{1:x}", backAgain[0], backAgain[1]); 
    } 
} 

Печатается 81E0, как предсказывал странице вы связаны.