Как вы читаете текстовый файл без потери нечетных символов? - PullRequest
1 голос
/ 26 ноября 2009

Я хотел бы прочитать текстовый файл в массив строк, используя System.IO.File.ReadAllLines. Однако ReadAllLines удаляет некоторые странные символы в файле, которые я хотел бы сохранить, например, chr (187). Я пробовал несколько разных вариантов кодирования, но это не помогает, и я не вижу опцию «без кодирования».

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

Как лучше всего прочитать текстовый файл в массив строк без изменений в .net?

Ответы [ 3 ]

6 голосов
/ 26 ноября 2009

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

Когда вы говорите "chr (187)", какой символ Unicode вы имеете в виду?

Некоторые кодировки, которые вы можете попробовать:

  • Encoding.Default - кодировка системы по умолчанию
  • Encoding.GetEncoding (28591) - ISO-Latin-1
  • Encoding.UTF8 - очень распространено в современных файлах
2 голосов
/ 26 ноября 2009

Звучит так, будто вы хотите прочитать необработанные байты.

Используйте File.ReadAllBytes для чтения их в массив (не делайте этого для больших файлов) или используйте FileStream для чтения порций байтов за раз .

0 голосов
/ 26 ноября 2009

Символы, которые были удалены, были в начале файла. Оказывается, они были метками порядка байтов для UTF-8. File.ReadAllLines и File.ReadAllText удаляют метки порядка байтов, а функции LineInput и FileSystemObject - нет.

Если бы я объяснил в вопросе, что нечетные символы были в начале файла, я думаю, что получил бы быстрый ответ. Я буду признателен Джону Скиту за лучший ответ на поставленный мной вопрос.

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