0

我有一个包含从数据库读取的 UTF32 的文件。我希望 "Hi" 变成H\0\0\0i\0\0\0,但实际上是\0\0\0H\0\0\0i,前面有空字符。

有谁知道这是怎么发生的,以及我如何才能在保持所有数据完好无损的情况下对其进行解码?

4

1 回答 1

0

您似乎以网络字节顺序而不是您期望的相反顺序获得 utf-32。任何一个命令都对 utf-32 有效。

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

您可以使用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);
于 2013-06-12T16:24:24.147 回答