кодировка строки в C # - странные символы - PullRequest
0 голосов
/ 14 октября 2011

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

Например, эти имена неверны:

Björn (в файле) - следуетbe Björn

Ã… ke (в файле) - должно быть Åke

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

Могу ли я каким-либо образом декодировать строки?

спасибо Patrik

Редактировать: Еще немного информации, которую я должен был добавить раньше (я виню свою усталость).Файл представляет собой файл .xlsx.

Ответы [ 2 ]

4 голосов
/ 14 октября 2011

Я отлаживал это с помощью Notepad ++.Я скопировал правильные строки в Notepad ++.Я использовал кодирование |Конвертировать в UTF-8.Затем я выбрал кодировку |Кодировать как ANSI.Это имеет эффект интерпретации байтов UTF-8, как если бы они были ANSI.И когда я сделал это, у меня были те же ошибочные значения, что и у вас.Очевидно, что когда вы читаете файл, который интерпретируете, он имеет формат ANSI, а не UTF-8.

Решение заключается в том, что ваш файл был закодирован как UTF-8.Убедитесь, что файл интерпретируется как UTF-8, когда вы читаете его.Я не могу точно сказать вам, как это сделать, так как вы не показали, как вы читали файл.

Возможно, ваш файл не содержит порядка байтов.марка (спецификация) .Если это так, укажите кодировку при чтении файла, передав Encoding.UTF8.

0 голосов
/ 14 октября 2011

Я только что попробовал ваш первый пример, и он определенно выглядит так, как будто это UTF-8.

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

Когда вы загружаете его с .NET, вы должны просто иметь возможностьиспользовать File.OpenText, File.ReadAllText и т. д. - большинство операций ввода-вывода, работающих с кодировками в .NET, по умолчанию все равно UTF-8.

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