在SHIFT_JIS和Unicode编码之间转换是否有任何问题?

时间:2009-06-09 19:59:12

标签: .net unicode encoding character-encoding shift-jis

我听说Unicode和SHIFT_JIS代码之间存在(以前是)?模糊映射。 This KB article有点证明了这一点。

所以问题是:如果我采用SHIFT_JIS编码的文本,将其转换为Unicode并返回,我会丢失任何数据吗?

详细信息:我说的是Windows(XP和更高版本)和.NET(理论上它依赖于NLS API)。

1 个答案:

答案 0 :(得分: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。