我有一個C#程序,檢索一些JSON數據並使用Newtonsoft JSON來反序列化它。 因爲我在我的程序中使用波斯字符,所以JSON代碼將會顯示如下:\ u060c \ u067e \ u0644 \ u0627 \ u06a9 ....同樣,在我檢索我的程序中的JSON數據之後,這些字符仍顯示爲其編碼樣本但是在反序列化之後它轉換成了????字符。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