1

我听说 Unicode 和 SHIFT_JIS 代码之间存在(曾经是?)不明确的映射。这篇知识库文章在一定程度上证明了这一点。

所以问题是:如果我采用 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 回答