C#UTF8编码
问题描述:
我有一个C#程序,检索一些JSON数据并使用Newtonsoft JSON来反序列化它。 因为我在我的程序中使用波斯字符,所以JSON代码将会显示如下:\ u060c \ u067e \ u0644 \ u0627 \ u06a9 ....同样,在我检索我的程序中的JSON数据之后,这些字符仍显示为其编码样本但是在反序列化之后它转换成了????字符。C#UTF8编码
我该怎么办?
答
您的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可在瞬间有些异常处理可能会是不错的了。)
它的工作原理!谢谢! – ShirazITCo 2011-03-31 00:51:42
@Shiraz:你有没有做任何改变?如果是的话,我可以将它们纳入答案。 – configurator 2011-03-31 01:28:24