Как читать, ANSI закодировал файл, содержащий специальные символы

На Linux необходимо смотреть на использование epoll для асинхронного ввода-вывода. Могло бы также стоить подстроить буферы сокета для не траты слишком большого количества пространства ядра для каждого подключения.

я предположил бы, что необходимо быть в состоянии достигнуть 100k соединений на разумной машине.

59
задан Enyra 16 September 2009 в 10:00
поделиться

2 ответа

Использовать Encoding.Default :

string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);

Однако вы должны знать, что он читает его с использованием кодировки системы по умолчанию, которая может не совпадать с кодировкой файла. Не существует единой кодировки под названием ANSI, но обычно , когда люди говорят о «кодировке ANSI», они имеют в виду кодовую страницу Windows 1252 или что-то еще, что используется в их блоке.

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

123
ответ дан 24 November 2019 в 18:16
поделиться

Было бы разумно, если бы у вас были такие политики, которые также согласовали бы стандартную кодировку команды. Честно говоря, я не понимаю, почему какая-либо команда будет использовать кодировку, отличную от «Unicode (UtF-8 с подписью) - Codepage 65001» (за исключением, возможно, страниц ASPX со значительным нелатинским статическим содержанием, но даже тогда я могу » Я не вижу, как было бы сложно использовать UTF-8).

Предполагая, что вы все еще хотите разрешить смешанные кодировки, вам понадобится способ определить, в какой кодировке был сохранен файл, чтобы вы знали, в какую кодировку передать ReadAllText . Это непросто определить из файла, однако использование Encoding.Default , вероятно, будет работать нормально. Поскольку, скорее всего, вам нужно иметь дело только с двумя кодировками, VS (UTF-8 с подписью) и обычная кодировка ANSI, используемая вашими машинами (вероятно, Windows-1252).

Следовательно, использование

 string content = File.ReadAllText(pendingChange.LocalItem, Encoding.Default);

будет работать. (Как я вижу, Джон уже написал). Это работает, потому что, когда спецификация UTF-8 (что VS означает под термином «подпись») присутствует в начале файла, предоставленный параметр кодировки игнорируется и все равно используется UTF-8. Следовательно, если файл сохраняется с использованием UTF-8, вы получаете правильные результаты, а где используется ANSI, вы, скорее всего, также получите правильные результаты.

Кстати, если вы обрабатываете заголовки файлов, не ReadAllLines что проще?.

) присутствует в начале файла, указанный параметр кодировки игнорируется, и все равно используется UTF-8. Следовательно, если файл сохраняется с использованием UTF-8, вы получаете правильные результаты, а где используется ANSI, вы, скорее всего, также получите правильные результаты.

Кстати, если вы обрабатываете заголовки файлов, не ReadAllLines что проще?.

) присутствует в начале файла, указанный параметр кодировки игнорируется, и все равно используется UTF-8. Следовательно, если файл сохраняется с использованием UTF-8, вы получаете правильные результаты, а где используется ANSI, вы, скорее всего, также получите правильные результаты.

Кстати, если вы обрабатываете заголовки файлов, не ReadAllLines что проще?.

5
ответ дан 24 November 2019 в 18:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: