Автор Гілка: Opera+назви_файлів_кирилицею (локаль не UTF-8)  (Прочитано 1920 раз)

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Власне це скоріше не питання, а відповідь (поки-що дуже кострубата). :-/ Прошу шановне панство розглянути і поправити "напильником" :-[
Проблема: опера не відкриває файли (*.htm, *.html, *.mht etc - усі кириличні символи замінються символами із latin-1, якщо системна локаль 8-бітна, а не UTF-8).
Тимчасове вирішення проблеми: файли асоціюються із скриптом (лежить в ~/bin) - #!/bin/sh
NEW_FILE_NAME="`echo "$@" | recode -f CP1251..UTF-8 2> /dev/null | recode -f CR..QP 2> /dev/null | sed -n 'H;${x;s/=\n//g;p}' |  sed -n 'H;${x;s/=/%/g;p}' | sed -n 'H;${x;s/%0D%$//;p}' | sed -n 'H;${x;s/\ /%20/g;p}' | sed -n 'H;${x;s/\n//g;p}'`"
opera -newpage "$NEW_FILE_NAME"

P.S.: Особливо прошу звернути увагу на заміни "sed ..." - оцю частину треба б "мінімузувати".  :-/
P.P.S.: Як ви вже встигли побачити - локаль у мене CP1251 :)
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній Володимир Лісівка

  • Адміністратор ЩОДО
  • Видавець
  • *****
  • дописів: 3820
  • Карма: +11/-0
  • Програміст

echo -n тест | iconv -t utf8 | perl -MURI::Escape -e 'print uri_escape(<>);'
%D1%82%D0%B5%D1%81%D1%82-
Не воно?
[Fedora Linux]

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Дякую за підказку [smiley=dankk2.gif] Тепер маємо:#!/bin/sh
NEW_FILE_NAME="`echo -n "$@" | iconv -t utf8 | perl -MURI::Escape -e 'print uri_escape(<>," \x7f-\xff");'`"
opera -newpage "$NEW_FILE_NAME"

От якби весь скрипт на перлі написати [smiley=20.gif]
« Змінено: 2007-07-09 01:34:40 від cadca »
Ubuntu 20.04/18.04; CentOS 7.x

Відсутній cadca

  • Письменник
  • *****
  • дописів: 955
  • Карма: +0/-0
  • free like beer
Довелось ще підправити: замість perl -MURI::Escape -e 'print uri_escape(<>," \x7f-\xff");' вжив perl -MURI::Escape -e 'print uri_escape(<>,"^A-Za-z0-9/");' (краще перебрати, ніж недобрати  :))
Ubuntu 20.04/18.04; CentOS 7.x