解码“奇怪的”utf32格式

时间:2013-06-12 16:03:38

标签: c# decoding utf-32

我有一个包含从数据库中读取的UTF32的文件。 我希望“你好”成为H\0\0\0i\0\0\0,但它实际上是\0\0\0H\0\0\0i,前面有空字符。

有谁知道这可能会发生什么,以及我如何解码这使得所有数据保持不变?

1 个答案:

答案 0 :(得分:0)

您似乎以网络字节顺序获得utf-32而不是您期望的相反顺序。这两个订单都适用于utf-32。

当您请求utf-32时,数据库使用的字节顺序可能由该db的配置控制。

您可以使用IPAddress.NetworkToHostOrder转换单个代码点,或使用适当的字节顺序转换UTF32Encoding来转换字符串:

        var bytes = new byte[] {0,0,0,(byte)'H',0,0,0,(byte)'i'};
        var encoding = new UTF32Encoding(true, false);
        var text = encoding.GetString(bytes);

        Console.WriteLine(text);