Как сделать так, чтобы StreamReader считывал 0xDF как «es zet»? - PullRequest
0 голосов
/ 21 октября 2019

Как сделать так, чтобы StreamReader считывал 0xDF как "es zet"? --- или MS Word сохранит «es zet» как 0xC3 0x178?

Когда немецкая буква «es zet» копируется из MS Access и вставляется в Блокнот, «es zet» сохраняется как 0xC30x178.

Когда немецкая буква "es zet" копируется из MS Word и вставляется в Блокнот, "es zet" также сохраняется как 0xC3 0x178.

Когда MS Word сохраняетсяв качестве txt «es zet» изменяется на 0xDF.

Блокнот интерпретирует 0xC3 0x178 как «es zet». Блокнот также интерпретирует 0xDF как «es zet».

StreamReader (stFileName) читает 0xC3 0x178 как «es zet» --- он читает 0xDF как неизвестный.

(C #, WPF, Visual Studio 2019, MS Office 2019)

1 Ответ

3 голосов
/ 21 октября 2019

Когда вы сохраняете документ как текстовый файл с помощью MS Word, вы получаете следующее диалоговое окно:

MS Word File Conversion Dialog

Вы видите, что он выбран "Windows (по умолчанию) "кодировка. Это изменится в зависимости от вашего компьютера, но для меня (в Западной Европе) это Кодовая страница 850 . Глядя на это, вы можете видеть, что ß имеет значение 0xDF.

В .NET Framework (не .NET Core) системная кодовая страница для текущей машины доступна через Encoding.Default. Таким образом, вы можете использовать new StreamReader(stFileName, Encoding.Default).

Однако , разные машины будут использовать разные кодовые страницы, которые могут испортить ситуацию. Я настоятельно рекомендую MS Word сохранить файл как «Unicode (UTF-8)»:

MS Word File Conversion Dialog with UTF-8 selected

После этого вы сможете прочитать этот текстфайл с new StreamReader(stFileName), для StreamReader по умолчанию используется кодировка UTF-8.

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