Microsoft.Jet.OLEDB.4.0 Преобразование символов - PullRequest
4 голосов
/ 26 апреля 2011

Я работаю с CSV, который содержит символы, такие как:

” and •

Я читаю CSV через OleDb, а провайдер - Microsoft.Jet.OLEDB.4.0. когда данные загружаются в OleDbCommand, символы преобразуются в следующее соответственно:

“ and •

Я подозревал, что в строке подключения может быть параметр сопоставления, но я не смог ничего найти по этому поводу.

Я могу подтвердить следующее:

  1. Я вижу исходного персонажа в CSV, когда открываю его.
  2. Если я запускаю операцию выбора файла через OleDb WHERE [field] LIKE '% •%', я получаю 0 строк, но если SELECT WHERE [field] LIKE '% â € œ%', я возвращаю строки.

Есть мысли?

Ответы [ 2 ]

10 голосов
/ 27 апреля 2011

Наконец-то! Благодаря @HABJAN я смог получить разрешение, столь же простое, как установка CharaterSet в расширенных свойствах строки подключения. В моей ситуации это был UTF-8 ... обычно используемый по умолчанию в PHPMyAdmin, откуда мои данные были получены.

Результирующая рабочая строка подключения:

"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=\"{0}\";Extended Properties=\"text;HDR=Yes;FMT=Delimited;CharacterSet=65001;\""

Ключ - CharacterSet = 65001 ( Идентификатор кодовой страницы для UTF-8 ), который мог быть очевиден для некоторых подкованных людей, но мне как-то удалось избежать этих проблем за эти годы и никогда не сталкивался это в этом отношении.

Мне также удалось заставить работать решение HABJAN, когда я также следовал найденной документации @ http://msdn.microsoft.com/en-us/library/ms709353%28v=vs.85%29.aspx и установил CharacterSet так же, как указано выше.

Для моей ситуации это лучший метод, так как это более простое / более удобное решение, но +1 к ХАБДЖАНУ за помощь в этом!

Спасибо

4 голосов
/ 26 апреля 2011

Вы можете создать schema.ini файл и воспроизводить его с форматом и CharacterSet свойствами.

Взгляните на этот пример: Как читать данные из отформатированного текстового файла Unicode и импортировать в таблицу данных, используя .Net

А вот еще один пример, который покажет вам, как читать файл csv с помощью schema.ini: Импорт файла CSV в базу данных с помощью Schema.ini

...