178 / 68 / 13
Регистрация: 22.12.2015
Сообщений: 2,648
|
|
1 | |
Как определить кодировку текста с кириллицей10.02.2016, 07:47. Показов 9885. Ответов 33
Метки нет (Все метки)
Имеем коротенький текстовый файл. Грузим его (вставляем кусок через буфер обмена) в TextBox. Получаем вместо кириллицы "кракозябры". Как определить кодировку текста с кириллицей и изменить её.
0
|
10.02.2016, 07:47 | |
Ответы с готовыми решениями:
33
Как изменить кодировку текста? Как получить кодировку текста? Как автоматически определить кодировку при открытии текстового файла? Изменить кодировку текста в TextBox |
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
||||||||||||||||
12.11.2017, 09:53 | 21 | |||||||||||||||
OwenGlendower, этим и занимаюсь, несколько сайтов сделаны криво, ошибок валидности на некоторых достигает десятки а то и сотни, согласно validator.w3.org. Для себя собираю базу ссылок, которые не открываются данным кодом. Я вставил User-Agent, посмотрите верно ли, стали некоторые ссылки открыватся, но не все, например:
И в коде ниже хотелось бы убрать лишнее, пусть угадыванием кодировки занимается только UDE.Charp.
0
|
Администратор
|
||||||
12.11.2017, 21:35 | 22 | |||||
Верно
У меня эти ссылки открываются без проблем. Русский текст в читабельном виде. Ничему он мешает. В коде ошибке. Строка №3 должна быть такой:
0
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
|
12.11.2017, 22:13 | 23 |
Насчет 3строки я поторопился, не отредактировал.
Высылаю проект, в нем можно попробовать загрузить 2 ссылки, которые выше, они у меня точно не работают...
0
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
|
12.11.2017, 22:22 | 24 |
Еще пример шлю с коротким кодом (как выше), где в Combox заложены эти же ссылки на выбор, тоже не работает.
0
|
Администратор
|
||||||
12.11.2017, 23:39 | 25 | |||||
У меня работает
От этого примера мало толка т.к. там не используется авто-определение кодировки. Я обратил внимание что в обоих проектах используется .NET 4.5.2. Это значит что можно использовать класс HttpClient который умеет автоматически определять кодировку по заголовку Content-Type. Этого должно быть достаточно.
2
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
||||||
13.11.2017, 11:21 | 26 | |||||
Разобрался в причине, ативирус блокировал (KIS 18.0.0.405d), пришлось вносить exe в доверенные программы.
HttpClient хорошо парсит, в цикле у меня проверка по разным ссылкам, но если кодировка 1251 не понимает. Мне понравился WebClient с функцией DownloadString. И еще если у сайта 504 Gateway Time-out, то начинает долго думать WebClient потом у меня в исключение уходит, как сократить время на обдумывание:
OwenGlendower, можно функцию DownloadString сократить до минимума, поскольку есть излишний код, с задачей кодировки думаю на 100% справится UDE.Charp.
0
|
Администратор
|
|
13.11.2017, 11:28 | 27 |
Пример такого сайта?
Никак не сократить. Придется ждать ответа. Увы не справится. Его сбивает с толку html разметка и он возвращает Nothing в качестве кодировки. Поэтому не надо ничего сокращать в ней.
1
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
|
13.11.2017, 12:08 | 28 |
Проверил заново, с другого компа дома (до этого проверял на работе).
HttpClient все проверил как положено (в таблице было 136 ссылок), с кодировкой порядок, огромное спасибо! Буду проверять другие ссылки, может быть нарою что-то...
0
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
|||||||||||
13.11.2017, 12:59 | 29 | ||||||||||
Нашел все-таки ссылки где с кодировкой проблема:
1
|
Администратор
|
|
13.11.2017, 13:17 | 30 |
Egor2014, не думал что неправильно сконфигурованные сайты остались в таком количестве. Все приведенные ссылки не указывают кодировку в заголовке Content-Type, а делают это в мета-теге. Класс HttpClient берет во внимание только заголовок. Это значит что придется все-таки использовать метод DownloadString.
2
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
||||||
13.11.2017, 13:35 | 31 | |||||
CMS Wordpress в метатеге пишет кодировку
0
|
Администратор
|
|
13.11.2017, 14:04 | 32 |
Egor2014, потому что когда кодировка указана в заголовке Content-Type браузеру проще разобрать ответ. И если бы все сайты так делали, то нам не нужно было бы обсуждать как определить кодировку страницы
https://www.w3.org/Internation... clarations
1
|
29 / 8 / 3
Регистрация: 22.10.2013
Сообщений: 447
|
||||||
14.11.2017, 14:17 | 33 | |||||
Нашел ссылку, которую не загружает WebClient, видимо связано с Cookie или страница скриптом собирается?
1
|
Администратор
|
||||||||||||||||
14.11.2017, 14:53 | 34 | |||||||||||||||
Сообщение было отмечено Yury Komar как решение
Решение
Egor2014, данной странице нужна cookie с именем beget. Без неё страница не загружается как ожидается. Обходится добавлением вспомогательного класса CookieWebClient
CookieWebClient
И небольшой модификацией метода DownloadString DownloadString
И наконец использование:
По хорошему конечно нужно использовать класс который поддерживает выполнение JavaScript. Класс WebClient это не умеет. К сожалению в рамках самого .NET единственной альтернативой является компонент WebBrowser, но он слишком тяжеловесный и неудобный в использовании.
4
|
14.11.2017, 14:53 | |
14.11.2017, 14:53 | |
Помогаю со студенческими работами здесь
34
Как определить кодировку текста? Как можно определить кодировку текста используя VB(DOS, WIN, KOI ...)? Как в "Microsoft.XMLHTTP" определить кодировку текста Как отличить текст кириллицей от текста латиницей Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |