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

Вид: 20162|Ответ: 2

[Решено] Решение StreamReader для искажённых символов при чтении файлов

[Скопировать ссылку]
Опубликовано 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
 Хозяин| Опубликовано 13.04.2018 17:11:39 |
Этот пост был последний раз отредактирован QWERTYU 13.04.2018, 17:18

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

Опубликовано 19.04.2018 13:31:02 |
Если веб-контент сжат с помощью gzip и он искажается, есть два варианта

Первое решение:

//
        Сводка:
        Выберите или настройте тип декомпрессии, который используется.
        //
        Результаты возврата:
        Объект T:System.Net.DecompressionMethods, указывающий тип используемой декомпрессии.
        //
        Аномалия:
        T:System.InvalidOperationException:
        Текущее состояние объекта не позволяет задать это свойство.
        public DecompressionMethods AutomaticDecompression { get; декорация; }
Следующая строка кода выполняется, изменения очень незначительные!!




Второе решение:



Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com