正确处理从json.net收到的utf8字符串

时间:2016-04-04 14:00:34

标签: c# encoding utf-8 json.net

我正在使用json.net从服务器读取以json格式发送的数据。服务器将它在json中发送的所有字符串类型数据编码为utf-8。

现在要读取c#中的数据,我会这样做:string s = json.Value<string>("data");

我假设字符串s现在是utf-8格式,而c#中字符串的默认编码是utf-16(unicode)。

要将字符串转换为unicode,这是否正确?

byte[] bytes = Encoding.Unicode.GetBytes(s);
string unicode = Encoding.UTF8.GetString(bytes);

我想要的(我认为)是来自s的原始字节,然后将其传递给utf-8解码器以获得unicode,但我不确定Encoding.Unicode.GetBytes到底给了我什么,或者我应该使用什么。

1 个答案:

答案 0 :(得分:0)

由于.NET are encoded in UTF-16中的string个对象,因此无需转换任何内容。

如果有什么要改变,你应该改变JSON.NET反序列化字符串的东西:你不能对它进行双重解析。传入的JSON字符串已针对特定编码进行了解释。没有原始字节,你就无法从那里回来。