我想我错过了一些基本的东西,但我真的被这个弄糊涂了,搜索也没能找到我任何东西。
我有以下...
byte[] bytes1;
string string1;
byte[] bytes2;
然后我执行以下操作
bytes1 = { 64, 55, 121, 54, 36, 72, 101, 118, 38, 40, 100, 114, 33, 110, 85, 94, 112, 80, 163, 36, 84, 103, 58, 126 };
string1 = System.Text.Encoding.UTF7.GetString(bytes1);
bytes2 = System.Text.Encoding.UTF7.GetBytes(string1);
Bytes2 最终为 54 而不是 24 字节,它们是完全不同的字节。
现在当然这无论如何都是毫无意义的代码,但是我在诊断为什么我从 Encoding.UTF7.GetString 获得的字节不是我期望的字节时把它放进去。我已经明白这是我的代码没有给出预期结果的原因。
现在我很困惑。我知道如果我不使用编码,那么来自字符串的 GetBytes 的结果不能被依赖为一组特定的字节,但我正在使用编码并且仍然得到这种差异。
谁能启发我了解我所缺少的东西?
编辑:结论是它不是 UTF7。我正在使用高级语言编程的应用程序将原始字节数组写入数据库中的 varbinary。我无法控制如何将原始字符串编码为该语言的 varbinaries。我正在尝试阅读它们并在主应用程序的一个小的 C# 插件中处理它们,这是我遇到这个问题的地方。我尝试过的其他编码也没有给出正确的结果。