Есть ли проблемы при конвертации между кодировками SHIFT_JIS и Unicode? - PullRequest
1 голос
/ 09 июня 2009

Я слышал (есть?) Неоднозначные отображения между кодами Unicode и SHIFT_JIS. Эта статья в КБ в некоторой степени доказывает это.

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

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

1 Ответ

1 голос
/ 10 июня 2009

Да, похоже, это все равно приведет к потере данных:

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, как и предсказывалось страницей, на которую вы ссылались.

...