【问题标题】:Are there any problems converting between SHIFT_JIS and Unicode encodings?在 SHIFT_JIS 和 Unicode 编码之间转换是否有任何问题?
【发布时间】:2009-06-09 19:59:11
【问题描述】:

我听说(曾经是?)Unicode 和 SHIFT_JIS 代码之间的映射不明确。 This KB article 在某种程度上证明了这一点。

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

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

【问题讨论】:

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


    【解决方案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,正如您链接到的页面所预测的那样。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-07-07
      • 2013-03-10
      • 2017-01-02
      • 2018-12-11
      相关资源
      最近更新 更多