代码之家  ›  专栏  ›  技术社区  ›  DreamSonic

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

  •  1
  • DreamSonic  · 技术社区  · 16 年前

    This KB article 这在一定程度上证明了这一点。

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

    详细信息:我说的是Windows(XP及以上)和。NET(理论上依赖于NLS API)。

    1 回复  |  直到 16 年前
        1
  •  1
  •   Jon Skeet    16 年前

    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,正如您链接的页面所预测的那样。