我有一个包含从数据库中读取的UTF32的文件。
我希望“你好”成为H\0\0\0i\0\0\0
,但它实际上是\0\0\0H\0\0\0i
,前面有空字符。
有谁知道这可能会发生什么,以及我如何解码这使得所有数据保持不变?
答案 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);