C#UTF8编码

时间:2011-03-30 23:41:25

标签: c# json utf-8

我有一个c#程序可以检索一些JSON数据并使用Newtonsoft JSON对其进行反序列化。 因为我在我的程序中使用波斯字符,JSON代码将显示如下:\ u060c \ u067e \ u0644 \ u0627 \ u06a9 ....在我的程序中检索JSON数据后,此字符仍然显示为其编码样本。但我反序列化后转换为????字符。

我该怎么办?

2 个答案:

答案 0 :(得分:1)

您的JSON解串器已损坏; \ uXXXX应该变成正确的字符。

要自己动手,请使用此功能

// Turns every occurrence of \uXXXX into a proper character
void UnencodeJSONUnicode(string str) {
    return Regex.Replace(str,
                         @"\\u(?<value>[0-9a-f]{4})",
                         match => {
                             string digits = match.Groups["value"].Value;
                             int number = int.Parse(digits, NumberStyles.HexNumber);
                             return char.ConvertFromUtf32(number);
                         });
}

(未经测试的代码;目前我没有VS.一些异常处理可能也很好)

答案 1 :(得分:-1)

看起来它已经过JSON编码,所以你需要解码它。 DataContractJsonSerializer类可以执行此操作。

有关详细信息,请参阅此MSDN链接。