LINUX.ORG.RU

MC не правильно отображает содержимое HTML страницы

 , ,


0

1

добрый день

MC не правильно отображает содержимое HTML страницы при просмотре внутренним просмотрщиком по F3

не помню «как это давно у нас началось», МС периодически обновляю и с какой версии не подскажу, проверил на всех своих 4.8.x-сборках, «глюк» присутствует

обнуление настроек не помогло

ссылки, мысли, идеи, ключ.слова ...

заранее спасибо

mc-4.8.23

screen_shots

1й скрин - просмотр по F3 с правильно выставленной кодировкой (кракозябры)

2й скрин - редактирование по F4, и соотв. установленная та-же, правильная кодировка

просмотр одной и той-же страницы

архив страницы

★★★★

Последнее исправление: sunjob (всего исправлений: 7)

У меня все ОК по F3: http://0x0.st/iibj.png
По F4 то же самое.

GNU Midnight Commander 4.8.24
Built with GLib 2.50.3
Using the S-Lang library with terminfo database
With builtin Editor and Aspell support
With subshell support as default
With support for background operations
With mouse support on xterm and Linux console
With support for X11 events
With internationalization support
With multiple codepages support
Virtual File Systems: cpiofs, tarfs, sfs, extfs, ftpfs, sftpfs, fish
Data types: char: 8; int: 32; long: 32; void *: 32; size_t: 32; off_t: 64;
Gonzo ★★★★★
()

MC для просмотра файл скармливает первому из links, w3m или lynx. После показывает, то что они вывели. Кодировку «портит» один из них. Я даже не знаю как правильно тут задать-исправить кодировку, кроме как задать в самом html-файле.

anonymous
()
Ответ на: комментарий от Gonzo
GNU Midnight Commander 4.8.24
Built with GLib 2.26.1
Using the S-Lang library with terminfo database
With builtin Editor and Aspell support
With subshell support as default
With support for background operations
With mouse support on xterm and Linux console
With support for X11 events
With internationalization support
With multiple codepages support
Virtual File Systems: cpiofs, tarfs, sfs, extfs, ftpfs, sftpfs, fish, smbfs
Data types: char: 8; int: 32; long: 32; void *: 32; size_t: 32; off_t: 64;

возможные «причинНые» отличия

Built with GLib 2.26.1

не поделитесь скриптами сборки (слакбилды, спеки или что у вас там?! :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от anonymous

один из них

ни тот ни другой ... используется «встроенный вЪювер», возможно ошибаюсь :о)

(хотя может стоит вниматТельно присмотреться к данном процессу...достать с полки запылившийся скальпель ... :о)

sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от sunjob

«встроенный вЪювер»

У mc нет «встроенного вьювера» для html.

(И не будет. Щас бы рендерить html файловым менеджером)

Вот интересный кусок

cat /usr/libexec/mc/ext.d/web.sh
#!/bin/sh

# $1 - action
# $2 - type of file

action=$1
filetype=$2

[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"

do_view_action() {
    filetype=$1

    case "${filetype}" in
    html)
        links -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
            w3m -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
            lynx -dump -force_html "${MC_EXT_FILENAME}"
        ;;
    *)
        ;;
    esac
}

####
# дальше вырезано
anonymous
()
Ответ на: комментарий от anonymous

да в курсе я в курсе... бормант уже предложил носом ткнуться :о)

я думаю, возможно из-за

lynx-2.8.7-x86-sl12.2
links-2.12-i486-sl12.2

посмотрим, потыкаемся :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от sunjob

да в курсе я в курсе…

Вот что редактирование сообщений делает - можно задним числом быть «в курсе».

anonymous
()

links

сборки последних версий links показали, что после версии

links-2.14
вообще слова показываются, точнее «непоказываются точками», версия 2.14 последняя, кот. б.м. показывает «хотя-бы кракозябры»

все это собиралось на старой системе, возможно, и в этом дело... будем посмотреть ...

sunjob ★★★★
() автор топика

1й скрин - просмотр по F3 с правильно выставленной кодировкой (кракозябры)

Нажатием F8 можно переключать как будет отображен файл, результат обработки внешней программой, или показать как есть.

DiMoN ★★★
()
Ответ на: комментарий от DiMoN

F8 - RAW/Parse и ну и ... как это поможет «отцу русской демократии»? сырой файл я прекрасно смотрю и по F4 (второй скрин), задача же как раз наоборот, ковырятся не в «сыром файле», выуживая из него нужную информацию а удобно быстренько тут почитать страничку ... :о)

sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от sunjob

не поделитесь скриптами сборки (слакбилды, спеки...)

Не поделюсь, увы, т.к. использую автоматиечские сборки mc Андрея Татарановича. У меня Debian, если что. Проблем не было ни со сборками, ни со стоковым mc из оф.ициальных реп.

Ты сам вроде как решал уже подобное здесь на форумах. И да, у mc нет встроенного вьювера html-страниц, да и много чего другого. Он задействует внешние приложения.

Ковырять, скорее всего, надо свою систему, а именно, в сторону xdg-open, mc-шного web.sh и т.д. Как-то так.

Gonzo ★★★★★
()

P.S. Что самое интересное, у меня в системе нет links/elinks/lynx/w3m. Вероятно что-то еще умеет просматривать html, хз.

Gonzo ★★★★★
()

проверил - у меня нормально, mc самый свежий - sid рулит!

amd_amd ★★★★★
()
Ответ на: комментарий от Gonzo

ну да, помню, решал... :о) давненько это было... по мелочи забывается, когда все работает нормально, в эту кухню и не лезишь, а как «схватит»...

пообновляю пакеты, понастраиваю, очевидно, что-то «не то» с настройками...

ладно, спасибо :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от Gonzo
do_view_action() {
    filetype=$1

    case "${filetype}" in
    html)
        links -dump             "${MC_EXT_FILENAME}" 2>/dev/null || \
        w3m   -dump             "${MC_EXT_FILENAME}" 2>/dev/null || \
        lynx  -dump -force_html "${MC_EXT_FILENAME}" 2>/dev/null ||
        cat                     "${MC_EXT_FILENAME}"
...
-->
cat ...
sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 2)
Ответ на: комментарий от sunjob

Я видел, у меня такое же в системе. Только нет этих пакетов ВООБЩЕ. Не понимаю, что отвечает за просмотр html-страниц в таком случае, но разбираться лень :)

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

Может быть что-то прописано в ~/.config/mc/mc.ext в обход /usr/libexec/mc/ext.d/web.sh. Оно же меню/Команда/Редактировать файл расширений.

akk ★★★★★
()
Ответ на: комментарий от akk

~/.config/mc/mc.ext

# html
regex/i/\.html?$
        Open=/usr/lib/mc/ext.d/web.sh open html
        View=%view{ascii} /usr/lib/mc/ext.d/web.sh view html

Где еще глянуть можно? У меня уже чисто спортивный интерес.

Gonzo ★★★★★
()
Ответ на: комментарий от akk

А вот в /usr/libexec/mc/ext.d/web.sh у меня такое (кусок кода):

[ -n "${MC_XDG_OPEN}" ] || MC_XDG_OPEN="xdg-open"

do_view_action() {
    filetype=$1

    case "${filetype}" in
    html)
        links -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
            w3m -dump "${MC_EXT_FILENAME}" 2>/dev/null || \
            lynx -dump -force_html "${MC_EXT_FILENAME}" 2>/dev/null ||
            cat "${MC_EXT_FILENAME}"
        ;;
    *)
        ;;
    esac
}

Неужели cat?..

Gonzo ★★★★★
()
Ответ на: комментарий от Gonzo

да я все к тому, что :о) последнее что срабатывает, при отсутствии пакетов - это кат... он и показывает

sunjob ★★★★
() автор топика
Ответ на: комментарий от Gonzo

ну получается так... только, думаю, без iconv (если вы принудительно не дописали этот параметр в

/usr/libexec/mc/ext.d/web.sh

sunjob ★★★★
() автор топика
Ответ на: комментарий от Gonzo

Что-то у меня вопросов больше чем ответов.

да-а-а!!! умеют они в тупик поставить :о)

sunjob ★★★★
() автор топика
Ответ на: комментарий от Gonzo

решение

небольшой выкус из «бортового журнала»

1. сохраняем в файл, смотрим

enconv -L ru_RU.UTF-8 < 1.html > 1.ru
lynx -display_charset=utf-8 -force_html 1.ru
кракозиябры

2. пробуем настроить lynx изнутрей

настраиваем:

O - options
Assumed document character set(!): [utf-8___________]
стрелками наверх для применить:
"Accept Changes" (потом стрелка вправо - сохранить)

Save options to disk: [X] (стрелка вправо)
ОК - кажет нормально, но не сохраняет настройки при выходе

смотрим на настройку и уточнение вверху

Assumed document character set(!): [iso-8859-1______]
options marked with (!) will not be saved
браво мама!!!

3. чего там у нас с «золотыми» ключиками?

lynx --help | grep charset
-assume_charset       = MIMEname charset for documents that don't specify it
-assume_local_charset = MIMEname charset assumed for local files
-assume_unrec_charset = MIMEname use this instead of unrecognized charsets
-display_charset      = MIMEname charset for the terminal output
-html5_charsets         toggles use of HTML5 charset replacements (off)
lynx -display_charset=UTF8 -assume_charset=utf-8 -force_html  1.ru

работает

пробум перенаправление, работает

enconv -L ru_RU.UTF-8 < 1.html | lynx -dump -force_html -stdin -display_charset=UTF8 -assume_charset=utf-8

4. донастроЙка mc

sudo mcedit /usr/libexec/mc/ext.d/web.sh

добавляем

do_view_action() {
  filetype=$1

  case "${filetype}" in
  html)
  enconv -L ru_RU.UTF-8 <  "${MC_EXT_FILENAME}" | lynx -dump -force_html -stdin -display_charset=UTF8 -assume_charset=utf-8 2>/dev/null || \
  lynx  -dump -force_html  "${MC_EXT_FILENAME}" 2>/dev/null || \
  links -dump              "${MC_EXT_FILENAME}" 2>/dev/null || \
  w3m   -dump              "${MC_EXT_FILENAME}" 2>/dev/null || \
  cat                      "${MC_EXT_FILENAME}";;
    *) ;;
  esac
}

можно, конечно, донакрутить с enconv для «всех вориантов»...

спасибо за помощь :о)

sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 3)

проявилась новая проблема, из-за оставшихся хвостов с кодировкой просматривается кракозяброй

    <meta
     http-equiv="Content-Type"
     content="text/html; charset=koi8-r">
    <meta

для исправления нужно

charset=<любое значение>
заменять
charset=utf-8

итого вопрос: как это сделать простыми средствами баша... ну или то, что нормально впишется в баш?

т.е. на данный этап решено

charset=koi8-r
менять
charset=utf-8

тестовый скрипт

#!/bin/sh
set -e; clear

HTM=test.htm
CHARSET_DISPLAY=UTF8
 CHARSET_ASSUME=utf-8

#
# ищем charset=koi8-r">
#

enconv -L ru_RU.UTF-8 < $HTM | \
sed -e "s%charset=koi8-r%charset=$CHARSET_ASSUME%" | \
lynx -dump -force_html -stdin -display_charset=UTF8 -assume_charset=utf-8

минусы такого простого решения в том, что если в тексте встретиться «это», то тоже будет заменено на «тото» :о)

sunjob ★★★★
() автор топика
Последнее исправление: sunjob (всего исправлений: 1)
Ответ на: комментарий от sunjob

что если в тексте встретиться «это», то тоже будет заменено на «тото» :о)

sed -z 's/charset=koi8-r/charset=utf-8/' 
anonymous
()
Ответ на: комментарий от anonymous

спасибо, проверить под рукой ни чего нет :о) доберусь до большого компа, там пощюпаем

...

к стати, на -z не обратил внимание из-за весьма «пространного и неочевидного» описания... :о)

-z, --null-data separate lines by NUL characters

...

а как быть с более широко-правильным решением, типа этого?

charset=<любое значение>
заменять
charset=utf-8

sunjob ★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.