1

Unicode と SHIFT_JIS コードの間にあいまいなマッピングがある (以前は?) と聞いたことがあります。この KB 記事は、これをある程度証明しています。

問題は、SHIFT_JIS でエンコードされたテキストを取得し、それを Unicode に変換して元に戻すと、データが失われるのでしょうか?

詳細: Windows (XP 以降) と .NET (理論的には NLS API に依存) について話しています。

4

1 に答える 1

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 を出力します。

于 2009-06-09T20:06:43.633 に答える