Неправильный просмотр HTML в кодировке UTF-8
Select messages from
# through # FAQ
[/[Print]\]
Goto page 1, 2  Next  :| |:
Total Commander -> Общие вопросы

#1:  Author: antabuLocation: Новосибирск PostPosted: Fri Sep 16, 2022 11:19
    —
Извините, если уже обсуждалось. Win XP
Вьювером по F3 открываю для просмотра .html файл с кириллицей в кодировке UTF-8. Тип файла автоопределяется правильно, а кодировка - нет.
В меню Кодировка выбираю Другая кодировка (ручной ввод) - ввожу кодовую страницу 65001.
Теперь текст отображается правильно, однако копирование работает неправильно, копируются не те символы, которые выделены.
Правда, если кодировку выбрать в меню Вид, то копирование работает правильно.
Я так понимаю, что автоопределение кодировки происходит по нескольким символам первых строк. В .html это теги с латиницей, по ним определить кодировку нельзя. А как настроить автоопределение по другому месту файла?
И ещё. Если в меню Кодировка выбрать Настроенная для текущего шрифта, а шрифт выбрать ARIALUNI , то и кодировка должна быть юникодная?

#2:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Sat Sep 17, 2022 12:32
    —
Лучше приложить файл, т.к. кодировка может быть прописана в самом коде.

#3:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Sep 17, 2022 13:30
    —
antabu
Прочитайте внимательно заголовок темы ("Проблемы, оставшиеся неисправленными"), пояснения в первом сообщении (их, впрочем, и потом полно было, в т.ч. несколько на текущей странице) и получите очередное замечание за оффтоп. Вы правила форума когда-нибудь соблюдать начнёте или пора прибегать к более серьёзным мерам воздействия и начать подобные сообщения просто удалять?
Это не говоря про то, что вы даже не считаете нужным указать текущую версию TC. А ответ в общем виде будет, скорее всего, "никак не настроить".

#4:  Author: antabuLocation: Новосибирск PostPosted: Sat Sep 17, 2022 15:53
    —
Прошу прощения.
Объясняю. Столкнулся с явлением, когда выбираю ручной ввод кодировки 65001 и в результате копируется не тот текст, который выделен, на версии TC 9.51, обновился до последней версии, обнаружил, что баг сохранился и решил запостить сюда, не прочитав первого сообщения.
А сегодня под седьмой виндой - то же самое.
Однако, это наблюдаю на файлах .html, скачанных с либрусека. Если сохранить реальную страницу в кодировке UTF-8 из интернета, при просмотре текст отображается правильно.
Подскажите, в какой теме я мог бы выложить кусочек такого текста, чтобы Вы убедились, что баг реально существует?

#5:  Author: AvadaLocation: Россия, Саратов PostPosted: Sat Sep 17, 2022 18:38
    —
antabu
Вот и выложите пока здесь, причём не кусочек, а ссылку на залитый куда-то (лучше в архиве) весь проблемный файл. А где и как это разместить потом, разберутся, видимо, теперь уже без вашего участия.

#6:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 18, 2022 06:48
    —
https://disk.yandex.ru/d/UEyk5TkY712IUg

#7:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Sep 18, 2022 08:03
    —
Avada
Сообщения выносятся из темы "Проблемы, оставшиеся неисправленными" в самостоятельную тему.
Ваш файл действительно криво отображается в Листере (проверял в TC 10.51 на Windows 7), причём не только в чистом TC, но и с плагином HTMLView. Обычно же подобных проблем нет.
В первой строке, полагаю, запись charset=utf8 сделана так, что непонятна для TC и его плагинов. Я тут не специалист, но во всяком случае, после замены <meta http-equiv='Content-Type' content='text/html; charset=utf8'> на <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> весь этот паноптикум пропадает. В чём тут дело — в сайте, в браузере или в самом способе сохранения, смотрите самостоятельно.
Разумеется, если неправильно сработало автоопределение кодировки, в Листере в данном случае следовало выбрать штатный режим "UTF-8" в меню "Вид". Зачем надо было вручную добавлять в список кодировок изначально отсутствовавшую там строку для UTF-8 (65001), я не понимаю, однако результат подтверждаю: копирование текста теперь выполняется действительно неправильно.
Поскольку при правильном сохранении страницы бага нет, а исправляется проблема, как сказано выше, не той опцией, не знаю, надо ли тут что-то обсуждать.

#8:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 18, 2022 09:30
    —
Дело в том, что подобную процедуру просмотра подобных скачанных файлов я проделываю не одну тысячу раз в течение нескольких лет. И вместо того, при автоопределении кодировки, чтобы каждый раз переключаться вручную в меню "Вид", хотел один раз выбрать в меню"Кодировка", отказавшись от автоопределения.
Мне нужно бывает скопировать несколько слов из текста.
А за диагностику по поводу кавычек благодарю.
P.S.
Quote:
Зачем надо было вручную добавлять в список кодировок изначально отсутствовавшую там строку для UTF-8 (65001), я не понимаю,
В этом списке полно кодировок, которые реально не встречаются на практике, с самая ходовая - отсутствует. Этот список давно пора ревизовать автору программы.

Last edited by antabu on Sun Sep 18, 2022 10:02; edited 1 time in total

#9:  Author: Monarch-LFV PostPosted: Sun Sep 18, 2022 09:58
    —
antabu
Если подобную операцию вы проделываете не одну тысячу раз и нужно только скопировать текст, может быть проще написать скрипт и распарсить как обычный текстовый файл? Это просто мысли вслух.

#10:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 18, 2022 10:04
    —
Не умею.

#11:  Author: AvadaLocation: Россия, Саратов PostPosted: Sun Sep 18, 2022 10:11
    —
antabu
Вы выбрали, ИМХО, неподходящий механизм. Нетрудно заметить, что при активном режиме "UTF-8" (как и при некоторых других) меню "Кодировка", устанавливающее постоянную кодировку без автоопределения, вообще недоступно. TC использует здесь более адекватные методы, не требующие обращения к этому меню, которое, собственно, и предназначено в первую очередь для работы с экзотическими кодировками и дополняет, а не заменяет основные опции для, вот именно, ходовых вариантов. В меню "Вид" для установки этого режима каждый раз лезть необязательно, достаточно клавиши 7.
И, как говорится, вишенка на тортике: при вашем способе установки кодировки кривое копирование текста из HTML происходит, похоже, в любом случае — даже из нормально сохранённого файла. Ещё один аргумент в пользу того, что данная методика не годится.
Что касается "не одной тысячи раз", то рискну дать альтернативный совет: установите в TС как средство внешнего (или внутреннего, если через Apploader) просмотра старую, но безошибочную утилиту View64 и копируйте с её помощью содержимое своих HTML сколько угодно вместо, извините, занятий фигнёй.
Ещё одна альтернатива (хотя и не идеальная) уже в рамках TC: назначить для типа файлов *.HTML режим просмотра UTF-8 (7) — см. кнопку на второй странице диалога настроек Листера. Естественно, будут проблемы с HTML в другой кодировке, но для большого массива проблемных файлов с UTF-8 сгодится: отображение текста нормальное и копирование работает. Временно отключать связку можно в дочернем диалоге "Режимы просмотра по типам файлов" щелчком по началу строки с *.html в списке (звёздочка превратится в минус).

#12:  Author: МоторокерLocation: г. Пермь (читается Перьмь) PostPosted: Mon Sep 19, 2022 21:54
    —
antabu
Откуда вообще берётся этот файл и что происходит потом? Какая цель этих действий?

Разгребать последствия конечно интересно, но может делается этот процесс намного проще.

#13:  Author: Monarch-LFV PostPosted: Tue Sep 20, 2022 03:20
    —
antabu wrote:
А за диагностику по поводу кавычек благодарю.

Там даже не в кавычках дело, а в дефисе: UTF-8. Вернее в его отсутствии изначально.
Если его добавить, то у меня все нормально открывается и копируется. Написал VBS скрипт, добавляющий этот дефис во все выделенные файлы:
Code:
' Меняет в выделенных файлах "utf8" на "utf-8"
' параметры: %WL

Option Explicit
on error resume next
Dim FSO, FileList, List, F, filename, TextStream, Str
Set FSO  = CreateObject("Scripting.FileSystemObject")
FileList = WScript.Arguments(0)
List     = Split(FSO.OpenTextFile(FileList,,,-1).ReadAll, vbNewLine)
For Each F In List
  If F <> "" Then
    set filename = FSO.Getfile(F) ' Имя файла

    Set TextStream = FSO.OpenTextFile(filename, 1, False, -2)
      Str = TextStream.ReadAll
    TextStream.Close
 
    Set TextStream = FSO.OpenTextFile(filename, 2, False, -2)
      Str = replace(Str,  "charset=utf8", "charset=utf-8")
      TextStream.Write Str
    TextStream.Close
  End If
Next

#14:  Author: antabuLocation: Новосибирск PostPosted: Sun Sep 25, 2022 14:54
    —
Моторокер wrote:
antabu
Откуда вообще берётся этот файл и что происходит потом? Какая цель этих действий?

Разгребать последствия конечно интересно, но может делается этот процесс намного проще.

Это длинная история. Я коллекционирую электронные книги ...надцать лет (в основном - технические). Зарегистрирован на либрусеке примерно тогда, и выполнил требования этой библиотеки, чтобы иметь возможность скачивать оттуда. Файл взят оттуда и в том виде, как он был, я его выложил в облако.
Основной формат у них - .fb2. Но в те годы я не смог подобрать для себя подходящей читалки для этого формата под виндой. Тогда я стал брать книги в .html и конвертировать их плагином CHMDir в .chm.
Тогдашняя версия ТС не обладала текстовым поиском по 2-м кодировкам, все файлы перекодированы в виндовую кодировку для удобства поиска текста в один проход.
Для названий файлов книг у меня своя система. На кириллице даю название книги (часто - укороченное), в скобках - год издания, далее фамилия и инициалы автора, .chm. Например,
Нищета историцизма(93)Поппер К.cHm
Сначала создаю папку с таким именем, а для этого и нужен просмотр и копирование слов скачанного файла из архива, быстрее, чем в браузере.

#15:  Author: BlackFoxLocation: Mayence PostPosted: Mon Oct 10, 2022 16:59
    —
Monarch-LFV правильно выше уазал - проблема не в кавычках, а в отсутствии тире в названии кодировки. По стандарту тире там должно присутствовать https://www.w3.org/International/questions/qa-html-encoding-declarations
Как вариант - в стандарте есть указание на то, что наличие BOM заголовка имеет приоритет перед указанием кодировки в метатэге. Если это действительно так и работает в тотале - может, легче сгенерировать BOM заголовок? Например, Notepad++ это делает парой щелчков меню.

P.S. сам проверить не могу, ибо воспроизвести проблему не получается - всё в листере показывается и копируется правильно и в режиме HTML просмотра, и просто текстом. Дажже с нерусской локалью по умолчанию.
TC10.50 на Win10.



Total Commander -> Общие вопросы


output generated using printer-friendly topic mod. All times are GMT + 4 Hours

Goto page 1, 2  Next  :| |:
Page 1 of 2

Powered by phpBB © 2001, 2005 phpBB Group