|
|
Опубликовано 13.04.2018 16:11:20
|
|
|

Сегодня, когда я создавал диалог Open File OpenFileDialog, мне нужно было прочитать открытый файл и показать его в RichTextBox в форме. Однако при отображении файла выяснилось, что отображаемая китайская строка была искажена. Ключевые части кода следующие:
Сначала я тоже думал, что проблема с кодированием символов, поэтому, инициализируя StreamReader, я добавил параметры кодирования символов и несколько раз: Encoding.Unicode, Encoding.UTF32, Encoding.UTF7, Encoding.UTF8, Encoding.ASCII, я перепробовал все схемы кодирования, которые можно было добавить, но результат был не лучшим.
Изначально операционная система Windows 2000 и более поздней использовала Unicode для обработки файлов, поэтому . Стандартная кодировка файлов для .Net также является Unicode. Если не указано иное, стандартная кодировка StreamReader — это Unicode, а не ANSI-страница текущей системы. Однако большинство документов всё ещё хранятся в ANSI-кодировании, а китайский текст использует gb2312, что приводит к искажённым китайским символам, что означает, что формат кодирования необходимо указывать при чтении текста.
Обходной путь: System.Text.Encoding.Default сообщает StreamReader кодировку текущей операционной системы.
|
Предыдущий:.net/c# Xml, Json, Hessian, сравнение сериализации буферов протоколовСледующий:.net/c# Используйте Costura.Fody для упаковки DLL в EXE
|