将代码从unicode转换为ansi代码时,我们得到了什么?作为第一个角色

时间:2014-09-04 06:54:26

标签: c#

将代码从unicode转换为ansi代码时,我们得到了什么?作为第一个角色。请帮助

byte[] ansibyte = System.Text.ASCIIEncoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.GetEncoding(865), unibytes);

它工作正常,但它始终显示第一个字符?

1 个答案:

答案 0 :(得分:1)

好的,这不是一个真正的答案,但在评论中编写代码太难了。

   class StackOverflow
   {
      byte[] unibytes;  // To be replaced by your data

      public void JustTesting()
      {
         string s;

         // Single-step these under the debugger, examine s after each attempt to see what works
         s = Encoding.Unicode.GetString(unibytes);
         s = Encoding.UTF8.GetString(unibytes);
         s = Encoding.BigEndianUnicode.GetString(unibytes);

         // Once you have the correct decoding, re-encode to code page 865
         byte[] asciiLikeByteArray = Encoding.GetEncoding(865).GetBytes(s);
      }
   }

我在两个阶段中的意思是首先将Unicode字节数组转换为C#字符串,然后检查字符串。这可能是问题所在。然后,当C#字符串正常时,将其转换为新的字节数组 - 问题不太可能在那个阶段。

在上面的代码中,我建议从“Unicode”到C#字符串的三种可能的转换。 Unicode可以存在于几种不同的变体中。

如果这三种可能性都不起作用,那么你的字节数组很可能毕竟不是纯Unicode。也许它有一个字节长度的前缀或其他东西。你必须分析这种情况。