Проблемы с чтением текстового файла - неразрывный пробел - PullRequest
1 голос
/ 19 января 2011

Я пытаюсь прочитать какой-нибудь текстовый файл со следующей строкой:

"WE BUY  : 10 000.00 USD"

Сначала я открыл этот файл в двоичном редакторе и 13-й символ (или 12-й по индексированию C # на основе 0) (тысячразделитель) - это «160 код в десятичном виде» или «код A0 в шестнадцатеричном виде» в кодировке Windows-1251.

Однако после того, как я прочитал эту строку в строку, используя File.ReadAllLines в отладчике, я теперь вижу символимеет код 65533.

"строк [9] [12] 65533 'char' char"

Кодировка по умолчанию Encoding.Default для моего ПК - "Windows-1251"".

Как получилось?

ОБНОВЛЕНИЕ

Попытался открыть файл с кодировкой UTF-8, результат все тот же.

ОБНОВЛЕНИЕ 2

Проблема в том, что кодировка файла является 8-битной, но отладчик показывает для 8-битного символа 'A0' 16-битное значение 65533.

1 Ответ

2 голосов
/ 19 января 2011

Один аргумент File.ReadAllLines будет предполагать, что ввод UTF-8, независимо от кодировки системы по умолчанию.

Для чего-либо еще необходимо указать кодировку:

var lines = File.ReadAllLines(filename, Encoding.GetEncoding(name));

Вы можете получить name от вашего Encoding.Default.WebName («Windows-1252» - это то, что я получаю здесь, но проверю локально).

...