Как установить резервную кодировку в 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», «Центрально-европейская, Microsoft "и" Другое (в т.ч. западноевропейское) ". Ни один из них не может отображать æ, ø и å. Там нет вариантов 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командном уровне, но это было отклонено.

l0b0
источник
Как насчет настройки View> Text Encoding> Unicode из меню Firefox?
Пол Нордин
@PaulNordin Это хороший способ сделать это для одной страницы (я забыл, что меню даже существует, так как они удалили его по умолчанию!), Но я не думаю, что это устанавливает значение по умолчанию.
10
1
Ах да, это только временно. Я думаю, что проблема может быть в другом месте. Firefox использует заголовки или метаданные для определения типа файла. Например, я создал файл test.html, содержащий UTF-8, åæâéèи открыл его в Firefox. Выход был мусор åæâéè. Однако, если я добавлю <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />к вершине, это выводит должным образом. Не уверен, как бы вы сделали это для файла .md.
Пол Нордин
Я также хочу сделать это, чтобы иметь возможность просматривать html-почту от mutt, запуская firefox, тем не менее, генерируемый mutt html-файл представляет собой utf-8 без метатегов.
pepper_chico

Ответы:

4

Обновление: это было исправлено начиная с Firefox 66

Файлы HTML (и обычный текст) <meta charset="utf-8">в кодировке UTF-8, загруженные из файла: теперь поддерживаются URL-адреса без спецификации или спецификации 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" />
  • А для всего остального единственный стандартный способ - это указать спецификацию ...

Разработчики Mozilla, похоже, открыты для патча, который добавляет настройку предпочтений, поэтому однажды можно будет открыть локальные документы без спецификации UTF-8 в Firefox.

mleu
источник
4

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

Два способа обойти это, на которые я смотрел:

1] Примените некоторые тривиальные исправления к исходному тексту и соберите Firefox самостоятельно, чтобы добавить опцию Unicode [UTF-8] в раскрывающееся меню «Настройки»> «Содержимое», «Шрифты и цвета», «Дополнительно», «Кодировка отступающего текста».

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

а) /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.

б) / 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
Content-Type: text / plain; charset = utf-8
Content-Type: text / html; кодировка = UTF-8

в) about: config - добавить New | Boolean:

browser.fixup.domainwhitelist.utfx  "true"

затем просто войдите utfxв адресную строку Firefox, чтобы получить список файлов ..

Луч-V
источник
+1 за ссылку Bugzilla. К сожалению, решения этой проблемы слишком излишни.
10
3

Как я прокомментировал в вашем вопросе, я изо всех сил пытался получить то же самое с целью правильного отображения частичного HTML (кодировка известна, но нет метатега для кодирования) из Mutt в Firefox через Mailcap.

В конце я выяснил, какая команда работает, и которая может вам тоже помочь:

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

Я обнаружил, что когда ваш файл в кодировке UTF-8 содержит спецификацию, Firefox предполагает, что это UTF-8. Поэтому я использовал uconvкоманду для добавления подписи спецификации. Предположим, что %{charset}это входная кодировка и %sимя файла. spongeИнструмент (из moreutilsпакета) , помогает изменить файловую InPlace и sleepпросто так , что Mutt не удаляет файл перед Firefox завершает загрузку его.

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

pepper_chico
источник
2

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

( источник )

aplaice
источник