Come impostare la codifica di fallback su UTF-8 in Firefox?


12

Ho scritto un documento di markdown norvegese:

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

L'ho convertito in HTML usando il markdowncomando:

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

Tuttavia, Firefox insiste sull'uso della codifica "windows-1252", interrompendo i caratteri non ASCII. Ho provato a impostare la modifica della codifica del testo di fallback da "Predefinito per impostazioni internazionali correnti" (che nel Regno Unito dovrebbe essere ISO-8859-1 o UTF-8) su "Europa centrale, ISO", "Europa centrale, Microsoft "e" Altro (incl. Europa occidentale) ". Nessuno di questi può visualizzare æ, ø e å. Non ci sono opzioni Unicode. Ho anche provato a cambiare intl.fallbackCharsetList.ISO-8859-1in about: config per vari valori come utf8, utf-8, iso-8859-1, senza fortuna.

Utilizzando questo markdownpacchetto:

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

e questa locale:

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

Ho provato a chiedere una soluzione a markdownlivello di comando, ma questa è stata respinta.


Che dire dell'impostazione Visualizza> Codifica testo> Unicode dal menu Firefox?
Paul Nordin,

@PaulNordin Questo è un buon modo per farlo per una pagina (avevo dimenticato che il menu esisteva anche da quando lo hanno rimosso per impostazione predefinita!), Ma non credo che imposta l'impostazione predefinita.
l0b0

1
Oh sì, è solo temporaneo. Penso che il problema potrebbe essere altrove. Firefox si basa su intestazioni o meta per determinare il tipo di file. Ad esempio, ho creato un file test.html UTF-8 contenente åæâéèe l'ho aperto in Firefox. L'uscita era spazzatura: åæâéè. Tuttavia, se aggiungo <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />all'inizio, viene visualizzato correttamente. Non sono sicuro di come lo faresti per un file .md.
Paul Nordin,

Voglio anche fare questo per essere in grado di visualizzare l'email html da mutt lanciando firefox, tuttavia, il file html che mutt produce è utf-8 senza meta tag.
pepper_chico,

Risposte:


4

Aggiornamento: risolto da Firefox 66

File HTML (e testo semplice) con codifica UTF-8 caricati da file: gli URL sono ora supportati senza <meta charset="utf-8">o la distinta base UTF-8

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


Informazioni storiche dal 2016

Il ragionamento alla base di questo comportamento sembra essere descritto nei bug di Mozilla 815551 (Rilevamento automatico UTF-8 per impostazione predefinita) e 1071816 (Supporto per il caricamento di testo BOMless UTF-8 / file semplici da file: URL)

Per quanto ho capito, sostanzialmente si riduce a " si dovrebbe sempre specificare la codifica poiché il rilevamento è troppo inaffidabile ".

  • Per i contenuti non locali è necessario sfruttare il protocollo. Con HTTP questo sarebbe fornire il corretto charsetnel Content-TypeHeader
  • Per i contenuti HTML è inoltre possibile utilizzare Doctype, ad es <meta charset="utf-8" />
  • E per ogni altra cosa l'unico modo standard rimasto è quello di specificare una DBA ...

Gli sviluppatori Mozilla sembrano essere aperti per una patch che aggiunge un'impostazione delle preferenze, quindi un giorno potrebbe essere possibile aprire documenti UTF-8 locali senza BOM in Firefox.


4

L'impostazione della codifica di fallback su UTF-8 in Firefox è stata deliberatamente bloccata - consultare bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Due modi per aggirare questo che ho visto sono:

1] Applica alcune banali patch alla fonte e crea tu stesso Firefox per aggiungere un'opzione Unicode [UTF-8] a Preferenze | Contenuto | Caratteri e colori | Avanzate | Codifica testo fallback.

2] Esegui un server httpd locale [Apache] e imposta un server virtuale basato sul nome utfx, per i file codificati utf-8 nella directory /my/utf-8/files. È quindi possibile generare un'intestazione http del set di caratteri utf-8, che Firefox riconoscerà e visualizzerà il file come codificato UTF-8. Ovviamente, la codifica dei file deve essere UTF-8!

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

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

(Ri) avviare il server - apachectl restartoppure apachectl graceful.

b) / etc / hosts - aggiungi il nome di dominio per accedere ai file codificati utf-8:

127.0.0.1   utfx

Le informazioni sul tipo di contenuto inviate dal server possono essere verificate con wget -S <URL>:

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

per i tre tipi di file (testæø, test.txt, test.html).
L'output dovrebbe essere:

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

c) about: config - aggiungi Nuovo | Booleano:

browser.fixup.domainwhitelist.utfx  "true"

quindi basta inserire utfxnella barra degli indirizzi di Firefox per ottenere l'elenco dei file ..


+1 per il collegamento Bugzilla. Le soluzioni sono purtroppo eccessive per il problema.
l0b0

3

Come ho commentato nella tua domanda, stavo faticando a ottenere lo stesso allo scopo di visualizzare correttamente html parziale (la codifica è nota ma non esiste un meta tag per la codifica) da Mutt in Firefox tramite Mailcap.

Alla fine ho scoperto un comando che funziona e che potrebbe aiutarti anche:

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

Ho scoperto che quando il tuo file codificato UTF-8 contiene BOM, Firefox assume quindi che sia UTF-8. Quindi ho usato il uconvcomando per aggiungere la firma DBA. Supponiamo che %{charset}sia il set di caratteri di input e %ssia il nome file. Lo spongestrumento (dal moreutilspacchetto) aiuta a cambiare il file sul posto e lo sleepè solo in modo che Mutt non elimini il file prima che Firefox abbia finito di caricarlo.

Non ho trovato altre opzioni per impostare una codifica di fallback in Firefox.


2

Se l'impostazione del fallback per solo i file offline, su UTF-8, è sufficiente per te, puoi andare a about:confige impostare il valore di intl.charset.fallback.utf8_for_filea true.

( fonte )


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.