Вставить данные Unicode из строки XML в Datatable - PullRequest
10 голосов
/ 06 февраля 2012

Я хочу сохранить данные Юникода в базу данных из строки xml, используя этот код:

XmlDocument xmlDoc = new XmlDocument();
xmlDoc.LoadXml(xmlText);

using (XmlNodeReader xmlReader = new XmlNodeReader(xmlDoc))
{
        DataTable dt = new DataTable();
        dt.TableName = "sms";
        dt.Columns.Add("rowID");
        dt.Columns.Add("origAddr");
        dt.Columns.Add("time");
        dt.Columns.Add("message");
        dt.ReadXml(xmlReader);
        return dt;
}

но когда я сохраняю данные в базе данных, мой символ юникода появляется с вопросительным знаком (???????)

Моя база данных правильная, а другие символы Юникода сохранены правильно.

Прошу прощения за плохое английское письмо :) 1008 *

Ответы [ 3 ]

1 голос
/ 06 февраля 2012

Я начну с обоснованного предположения.

Ваша база данных или ваша таблица использует набор символов, который не является полным Unicode. Символы, которые сохраняются в виде вопросительных знаков, являются символами, которые находятся за пределами базы данных или набора символов таблицы. Символы, которые сохраняются правильно, оказываются внутри базы данных или набора символов таблицы.

В качестве альтернативы, ваши XMLDocument() или DataTable() объекты преобразуют прочитанные символы в набор символов, который меньше полного Unicode.

Дайте дополнительную информацию, запрошенную в комментариях, и я посмотрю, смогу ли я улучшить этот ответ.

0 голосов
/ 21 февраля 2012

используйте XmlTextReader для чтения xml и проверьте, сохраняется ли ошибка

XmlTextReader stream = new XmlTextReader(_pathXml);
     while (stream.Read())
     {
         //TODO save each element
     }
0 голосов
/ 06 февраля 2012

Обычно это происходит, когда исходный текст не сохраняется как Unicode. Например, если вы читаете свои данные XML из текстового файла, и текстовый файл сохраняется как Ansi (с использованием кодовой страницы), или он сохраняется как файл Unicode без спецификации (метка порядка байтов или подпись), когда вы читаете свой текст файл, символы, не входящие в ASCII, могут не читаться правильно.
Чтобы решить эту проблему, откройте исходный XML-файл в текстовом редакторе (например, Notepad ++ ) и измените кодировку на Unicode или UTF-8, а затем сохраните файл.
Вы также можете открыть файл в Блокноте и сохранить его как Unicode (Файл / Сохранить как -> Кодировка: Unicode или UTF-8). Убедитесь, что при открытии файла в блокноте символы отображаются правильно.

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