Como definir a codificação de fallback para UTF-8 no Firefox?

12

Eu escrevi um documento com o markdown norueguês:

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

Eu o converti para HTML usando o comando markdown :

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

No entanto, o Firefox insiste em usar a codificação "windows-1252", quebrando os caracteres não-ASCII. Eu tentei definir a alteração da codificação de texto de fallback de "Padrão para localidade atual" (que aqui no Reino Unido deve ser ISO-8859-1 ou UTF-8) para "Central Europeia, ISO", "Europa Central, Microsoft "e" Outros (incl. Europa Ocidental) ". Nenhum destes pode exibir æ, ø e å. Não há opções Unicode. Eu também tentei alterar intl.fallbackCharsetList.ISO-8859-1 em about: config para vários valores como utf8 , utf-8 , iso-8859-1 , sem sorte.

Usando este pacote markdown :

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

e esta localidade:

$ 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=

Eu tentei solicitar uma solução no nível de comando markdown , mas isso foi rejeitado.

    
por l0b0 07.09.2016 / 20:40

4 respostas

4

Como eu comentei na sua pergunta, eu estava lutando para obter o mesmo com o propósito de exibir corretamente o html parcial (a codificação é conhecida, mas não há metatag para codificação) do Mutt no Firefox através do Mailcap.

No final, eu descobri um comando que funciona e que pode ajudá-lo também:

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

Descobri que quando seu arquivo codificado em UTF-8 contém BOM, o Firefox assume que é UTF-8. Então usei o comando uconv para adicionar a assinatura da lista de materiais. Suponha que %{charset} seja o conjunto de caracteres de entrada e %s seja o nome do arquivo. A ferramenta sponge (do pacote moreutils ) ajuda a alterar o arquivo no local e o sleep é apenas para que o Mutt não apague o arquivo antes que o Firefox o carregue.

Eu não encontrei nenhuma outra opção para definir uma codificação de fallback no Firefox.

    
por 01.10.2016 / 11:43
4

O raciocínio por trás desse comportamento parece ser descrito em bugs do Mozilla 815551 (Autodetect UTF-8 by padrão) e 1071816 (Suporte ao carregamento de arquivos de texto / simples BOMless UTF-8 do arquivo: URLs)

Tanto quanto eu entendo, basicamente resume-se a " um deve sempre especificar a codificação como detecção é muito confiável ".

  • Para conteúdo não local, você deve aproveitar o protocolo. Com HTTP, isso forneceria o charset correto no Content-Type Header
  • Para conteúdo HTML, você também pode usar o Doctype, por exemplo, <meta charset="utf-8" />
  • E para qualquer outra coisa, a única maneira padrão é especificar uma BOM ...

Os desenvolvedores da Mozilla parecem abertos para um patch que adiciona uma configuração de preferência. dia, pode ser possível abrir documentos locais UTF-8 sem BOM no Firefox.

    
por 30.11.2016 / 17:55
3

A definição da codificação de fallback para UTF-8 no Firefox foi deliberadamente bloqueada - veja bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Duas maneiras de contornar isso que eu tenho visto são:

1] Aplique alguns correções triviais à fonte e constrói o Firefox para adicionar uma opção Unicode [UTF-8] ao Preferences | Content | Fonts & Cores | Avançado | Menu suspenso "Codificação de texto reserva".

2] Execute um servidor httpd [Apache] local e configure um servidor virtual baseado em nome, utfx , para os arquivos codificados utf-8 no diretório /my/utf-8/files . Um cabeçalho HTTP charset utf-8 pode então ser gerado, o qual o Firefox reconhecerá e exibirá o arquivo como codificado em UTF-8. Obviamente, a codificação real do arquivo deve ser UTF-8!

a) /etc/httpd/httpd.conf - adicione:

<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>

(Re) inicia o servidor - apachectl restart ou apachectl graceful .

b) / etc / hosts - adicione o nome de domínio para acessar os arquivos codificados utf-8:

127.0.0.1   utfx

As informações de tipo de conteúdo enviadas pelo servidor podem ser verificadas com wget -S < URL >:

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

para os três tipos de arquivo (teste, teste.txt, teste.html).
A saída deve ser:

Content-Type: text/plain; charset=utf-8
Content-Type: text/plain; charset=utf-8
Content-Type: text/html; charset=utf-8

c) about: config - add Novo | Booleano:

browser.fixup.domainwhitelist.utfx  "true"

em seguida, digite utfx na barra de endereços do Firefox para obter a lista de arquivos.

    
por 30.01.2017 / 14:06
2

Se definir o substituto apenas para arquivos off-line, para UTF-8, é suficiente para você, acesse about:config e defina o valor de intl.charset.fallback.utf8_for_file to true .

( source )

    
por 05.05.2018 / 00:31