C # UTF8 кодировка - PullRequest
       2

C # UTF8 кодировка

0 голосов
/ 31 марта 2011

У меня есть программа на c #, которая извлекает некоторые данные JSON и использует Newtonsoft JSON для их десериализации. так как я использую персидские символы в моей программе, коды JSON будут показаны следующим образом: \ u060c \ u067e \ u0644 \ u0627 \ u06a9 .... также после того, как я получу данные JSON в своей программе, эти символы все еще будут отображаться как кодированный образец. но после десериализации он преобразован в ???? символы.

что мне делать?

Ответы [ 2 ]

1 голос
/ 31 марта 2011

Ваш десериализатор 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). Возможно, неплохо будет обработать некоторые исключения)

0 голосов
/ 31 марта 2011

Похоже, что оно было закодировано в JSON, поэтому вам нужно его декодировать. Класс DataContractJsonSerializer может сделать это.

См. Ссылку MSDN для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...