Як встановити резервне кодування до UTF-8 у Firefox?


12

Я написав норвезький документ про розмітку:

$ file brukerveiledning.md
brukerveiledning.md: UTF-8 Unicode text

Я перетворив його в HTML за допомогою markdownкоманди:

$ markdown > brukerveiledning.html <  brukerveiledning.md 
$ file brukerveiledning.html 
brukerveiledning.html: UTF-8 Unicode text

Однак Firefox наполягає на використанні кодування "windows-1252", порушуючи символи , що не належать до ASCII. Я спробував встановити зміни кодування резервного тексту з "Типовим для поточного локального" (який тут у Великобританії має бути або ISO-8859-1, або UTF-8) на "Центральноєвропейський, ISO", "Центральноєвропейський, Майкрософт "та" Інше (включаючи західноєвропейські) ". Жодне з них не може відображати æ, ø та å. Немає варіантів Unicode. Я також спробував змінити intl.fallbackCharsetList.ISO-8859-1в про: конфігурації в різні цінності , як utf8, utf-8, iso-8859-1, не пощастило.

Використовуючи цей markdownпакет:

$ pacman --query --owns "$(which markdown)"
/usr/bin/markdown is owned by markdown 1.0.1-6

і ця мова:

$ locale 
LANG=en_GB.utf8
LC_CTYPE="en_GB.utf8"
LC_NUMERIC="en_GB.utf8"
LC_TIME="en_GB.utf8"
LC_COLLATE="en_GB.utf8"
LC_MONETARY="en_GB.utf8"
LC_MESSAGES="en_GB.utf8"
LC_PAPER="en_GB.utf8"
LC_NAME="en_GB.utf8"
LC_ADDRESS="en_GB.utf8"
LC_TELEPHONE="en_GB.utf8"
LC_MEASUREMENT="en_GB.utf8"
LC_IDENTIFICATION="en_GB.utf8"
LC_ALL=

Я намагався попросити рішення на рівні markdownкоманд, але це було відхилено.


Як щодо налаштування Перегляд> Кодування тексту> Юнікод у меню Firefox?
Пол Нордін

@PaulNordin Це хороший спосіб зробити це для однієї сторінки (я забув, що таке меню навіть існувало, оскільки вони його видалили за замовчуванням!), Але я не думаю, що він встановлює типово.
l0b0

1
О так, це лише тимчасово. Я думаю, проблема може бути в іншому місці. Firefox для визначення типу файлу покладається на заголовки чи мета. Наприклад, я створив файл UTF-8 test.html, що містить åæâéèі відкрив його у firefox. Вихід був сміття: åæâéè. Однак якщо додати <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />до вершини, вона виводиться належним чином. Не знаєте, як би ви це зробили для .md-файлу.
Пол Нордін

Я також хочу зробити це, щоб мати можливість переглядати HTML-пошту з mutt, запустивши firefox, все ж, файл htt-файлу mutt створює utf-8 без метатегів.
pepper_chico

Відповіді:


4

Оновлення: це виправлено з Firefox 66

Файли HTML (та звичайного тексту), що кодуються UTF-8, завантажені з файлу: URL-адреси тепер підтримуються без <meta charset="utf-8">або BT UTF-8

https://developer.mozilla.org/en-US/docs/Mozilla/Firefox/Releases/66#HTML


Історична інформація від 2016 року

Причини такої поведінки, здається, описані в помилках Mozilla 815551 (за замовчуванням Autodetect UTF-8) та 1071816 (Підтримка завантаження текстових / звичайних файлів BOMless UTF-8 з файлу: URL-адреси)

Наскільки я розумію, це в основному зводиться до " завжди слід вказувати кодування, оскільки виявлення занадто недостовірне ".

  • Для немісцевого вмісту слід використовувати протокол. З HTTP це надасть правильне charsetв Content-Typeзаголовку
  • Для вмісту HTML ви можете додатково використовувати Doctype, тобто <meta charset="utf-8" />
  • І нічого іншого, єдиний стандартний спосіб залишив ist, щоб вказати BOM ...

Мовлявські розробники, здається, відкриті для виправлення, що додає налаштування переваг, тому одного дня можливо відкрити локальні документи UTF-8 без BOM у Firefox.


4

Встановлення резервного кодування для UTF-8 у Firefox навмисно заблоковано - див. Bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Я розглядав два способи цього:

1] Застосуйте деякі тривіальні патчі до джерела та складіть Firefox самостійно, щоб додати параметр Unicode [UTF-8] до меню Налаштування | Зміст | Шрифти та кольори | Розширений | "Кодування тексту резервного копіювання".

2] Запустіть локальний сервер [Apache] httpd та встановіть віртуальний сервер на основі імені utfx, для закодованих файлів utf-8 у каталозі /my/utf-8/files. Потім може бути створений заголовк http-заголовка http-8, який Firefox розпізнає та відображатиме файл як закодований UTF-8. Звичайно, фактичне кодування файлів повинно бути UTF-8!

a) /etc/httpd/httpd.conf - додати:

<VirtualHost *:80>
    # This first-listed virtual host is also the default for *:80
    ServerName localhost
    DocumentRoot "/srv/httpd/htdocs"
</VirtualHost>
<VirtualHost *:80>
    ServerName utfx
    DocumentRoot "/my/utf-8/files"
      <Directory "/my/utf-8/files">
          Options Indexes
          Require all granted
      </Directory>
## show UTF-8 characters in file names:
    IndexOptions Charset=UTF-8
## for files with extension html or txt:
    AddCharset UTF-8 txt html
## for extensionless files:
      <Files *>
          ForceType 'text/plain; charset=UTF-8'
      </Files>
      <Files *\.*>
          ForceType None
      </Files>
</VirtualHost>

(Пере) запустити сервер - apachectl restartабо apachectl graceful.

b) / etc / hosts - додайте доменне ім'я для доступу до закодованих файлів utf-8:

127.0.0.1   utfx

Інформацію про тип вмісту, що надсилається сервером, можна перевірити за допомогою wget -S <URL>:

wget -S http://utfx/test{æø,.txt,.html} 2>&1 >/dev/null | grep Content-Type

для трьох типів файлів (testæø, test.txt, test.html).
Вихід повинен бути:

Тип вмісту: текст / звичайний; charset = utf-8
Тип вмісту: текст / звичайна; charset = utf-8
Тип вмісту: текст / html; charset = utf-8

c) about: config - додайте New | Boolean:

browser.fixup.domainwhitelist.utfx  "true"

тоді просто введіть utfxу адресний рядок Firefox, щоб отримати список файлів ..


+1 для посилання Bugzilla. На жаль, вирішення проблеми, на жаль, дуже непосильне.
l0b0

3

Як я коментував у вашому запитанні, я намагався отримати те саме, щоб правильно відобразити частковий html (кодування відомо, але метатегів для кодування немає) від Mutt в Firefox через Mailcap.

Зрештою, я з’ясував команду, яка працює, і яка може допомогти вам також:

  • uconv --add-signature -f %{charset} -t UTF-8 %s | sponge %s && firefox -new-tab %s & sleep 5

Я виявив, що коли ваш закодований файл UTF-8 містить BOM, то Firefox припускає, що це UTF-8. Тому я використав uconvкоманду для додавання підпису BOM. Припустимо, що %{charset}це вхідна діаграма і %sє ім'ям файлу. spongeІнструмент (з moreutilsпакета) , допомагає змінити файлову InPlace і sleepпросто так , що Mutt не видаляти файл перед Firefox завершує завантаження його.

Я не знайшов іншого варіанту встановлення резервного кодування в Firefox.


2

Якщо установка запасного варіанту тільки для автономних файлів, в UTF-8, досить для вас, то ви можете піти about:configі задати значення intl.charset.fallback.utf8_for_fileдля true.

( джерело )


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.