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.