我有一个包含从数据库读取的 UTF32 的文件。我希望 "Hi" 变成H\0\0\0i\0\0\0
,但实际上是\0\0\0H\0\0\0i
,前面有空字符。
有谁知道这是怎么发生的,以及我如何才能在保持所有数据完好无损的情况下对其进行解码?
您似乎以网络字节顺序而不是您期望的相反顺序获得 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);