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