«странные символы» работают нормально на сервере SQL, а не через CSV - PullRequest
1 голос
/ 02 августа 2011

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

Наша база данных SQL Server (2008) имеет вполне законные данные в текстовых полях, которые выглядят как

"Microsoft XML · ÖÎö³ÌÐòºÍ SDK (Неизвестно)"

Я читаю данные из файлов CSV в C #, которые имеют такие же данные. Мы используем LumenWorks.Framework.IO.Csv CsvReader (потому что нам иногда приходится иметь дело с действительно большими файлами). У нас есть исходный код для этого.

Эти поля выглядят хорошо (то есть, как указано выше) в самом файле CSV, но когда данные считываются из CSV, они в конечном итоге представляются как

'Microsoft XML SDK (неизвестно)'

Что неверно и (очевидно) не находит соответствия при использовании его в запросах к базе данных. Я могу запросить штраф, используя исходную строку в SMSS.

Я мешал поиску в сети, потому что изо всех сил стараюсь найти правильные термины для поиска проблемы!

Может ли кто-нибудь объяснить эту проблему в надлежащих терминах и, возможно, есть идеи относительно того, что я должен искать в коде CsvReader (или нашем), который может вызвать этот неправильный перевод?

1 Ответ

2 голосов
/ 02 августа 2011

Я подозреваю, что вам нужно указать кодировку вашего CSV-файла.

Если вы сейчас делаете что-то вроде этого:

using (var csv = new CsvReader(new StreamReader("foo.csv"), true))
{
    // ...
}

... тогда попробуйте что-то подобноевместо этого:

using (var csv = new CsvReader(new StreamReader("foo.csv", Encoding.Unicode), true))
{
    // ...
}

Обратите внимание, что я не знаю, какую кодировку вам нужно использовать.Я использовал Unicode в качестве примера.(Я думаю, кодировка по умолчанию для StreamReader равна UTF8, если вы не укажете.)

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