将代码从unicode转换为ansi代码时,我们得到了什么?作为第一个角色。请帮助
byte[] ansibyte = System.Text.ASCIIEncoding.Convert(System.Text.Encoding.UTF8, System.Text.Encoding.GetEncoding(865), unibytes);
它工作正常,但它始终显示第一个字符?
答案 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。也许它有一个字节长度的前缀或其他东西。你必须分析这种情况。