Wie setze ich die Fallback-Codierung in Firefox auf UTF-8?


12

Ich habe ein norwegisches Abschriften-Dokument geschrieben:

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

Ich habe es mit dem folgenden markdownBefehl in HTML konvertiert :

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

Firefox besteht jedoch darauf, die "Windows-1252" -Codierung zu verwenden und die Nicht-ASCII-Zeichen zu brechen. Ich habe versucht, das Ändern der Fallback-Textcodierung von "Standard für aktuelles Gebietsschema" (in Großbritannien sollte dies entweder ISO-8859-1 oder UTF-8 sein) in "Mitteleuropäisch, ISO", "Mitteleuropäisch, Microsoft" zu ändern "und" Sonstige (einschl. westeuropäische) ". Keine dieser Anzeigen kann æ, ø und å anzeigen. Es gibt keine Unicode-Optionen. Ich habe auch versucht , zu ändern intl.fallbackCharsetList.ISO-8859-1in about: config auf verschiedene Werte wie utf8, utf-8, iso-8859-1, ohne Glück.

Verwenden dieses markdownPakets:

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

und dieses Gebietsschema:

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

Ich habe versucht, auf markdownBefehlsebene nach einer Lösung zu fragen , diese wurde jedoch abgelehnt.


Was ist mit der Einstellung von Ansicht> Textkodierung> Unicode im Firefox-Menü?
Paul Nordin

@PaulNordin Das ist eine gute Möglichkeit für eine Seite (ich hatte vergessen, dass das Menü überhaupt existiert, da es standardmäßig entfernt wurde!), Aber ich glaube nicht, dass dies die Standardeinstellung ist.
07.09.16

1
Oh ja, es ist nur vorübergehend. Ich denke, das Problem könnte woanders liegen. Firefox verwendet Header oder Meta, um den Dateityp zu bestimmen. Ich habe zum Beispiel eine UTF-8-Datei test.html erstellt, åæâéèdie diese enthält, und sie in Firefox geöffnet. Der Ausgang war Müll: åæâéè. Wenn ich es jedoch oben hinzufüge <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />, wird es richtig ausgegeben. Nicht sicher, wie Sie dies für eine MD-Datei tun würden.
Paul Nordin

Ich möchte dies auch tun, um HTML-E-Mails von Mutt durch Starten von Firefox anzeigen zu können. Die von Mutt erstellte HTML-Datei ist jedoch utf-8 ohne Meta-Tags.
pepper_chico

Antworten:


4

Update: Dies wurde seit Firefox 66 behoben

UTF-8-codierte HTML- (und Nur-Text-) Dateien, die aus Datei: URLs geladen wurden, werden jetzt ohne <meta charset="utf-8">oder mit UTF-8-Stückliste unterstützt

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


Historische Informationen von 2016

Die Gründe für dieses Verhalten scheinen in den Mozilla-Fehlern 815551 (standardmäßig Autodetect UTF-8) und 1071816 (Unterstützung für das Laden von BOMless UTF-8-Text- / Nur-Dateien aus Datei: URLs) beschrieben zu sein.

Soweit ich weiß, läuft es im Grunde darauf hinaus, " die Codierung sollte immer angegeben werden, da die Erkennung zu unzuverlässig ist ".

  • Für nicht lokale Inhalte sollten Sie das Protokoll nutzen. Bei HTTP würde dies das richtige charsetim Content-TypeHeader liefern
  • Für HTML-Inhalte können Sie zusätzlich den Doctype verwenden, dh <meta charset="utf-8" />
  • Für alles andere bleibt nur die Angabe einer Stückliste ...

Mozilla-Entwickler sind offenbar offen für einen Patch , der eine Voreinstellung hinzufügt, sodass es eines Tages möglich sein könnte, lokale UTF-8-Dokumente ohne Stückliste in Firefox zu öffnen.


4

Das Setzen der Fallback-Codierung auf UTF-8 in Firefox wurde absichtlich blockiert - siehe bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Zwei Möglichkeiten, dies zu umgehen, sind:

1] Wenden Sie einige einfache Patches auf die Quelle an und erstellen Sie Firefox selbst, um eine Unicode-Option [UTF-8] im Dropdown-Menü "Einstellungen | Inhalt | Schriftarten & Farben | Erweitert | Fallback-Textcodierung" hinzuzufügen.

2] Führen Sie einen lokalen [Apache] httpd-Server aus und richten Sie einen namensbasierten virtuellen Server utfxfür die mit utf-8 codierten Dateien im Verzeichnis ein /my/utf-8/files. Anschließend kann ein http-Header für den utf-8-Zeichensatz generiert werden, der von Firefox erkannt und als UTF-8-codierte Datei angezeigt wird. Natürlich muss die eigentliche Dateicodierung UTF-8 sein!

a) /etc/httpd/httpd.conf - füge hinzu:

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

Starten Sie den Server (neu) - apachectl restartoder apachectl graceful.

b) / etc / hosts - Fügen Sie den Domainnamen für den Zugriff auf die mit utf-8 verschlüsselten Dateien hinzu:

127.0.0.1   utfx

Die vom Server gesendeten Informationen zum Inhaltstyp können mit wget -S <URL> überprüft werden:

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

für die drei Dateitypen (testæø, test.txt, test.html).
Die Ausgabe sollte sein:

Inhaltstyp: Text / Plain; charset = utf-8
Inhaltstyp: text / plain; charset = utf-8
Inhaltstyp: text / html; Zeichensatz = utf-8

c) about: config - add New | Boolean:

browser.fixup.domainwhitelist.utfx  "true"

Geben Sie dann einfach utfxin die Firefox-Adressleiste ein, um die Dateiliste abzurufen.


+1 für den Bugzilla-Link. Die Lösungen sind leider sehr übertrieben für das Problem.
30.

3

Wie ich in Ihrer Frage kommentiert habe, hatte ich Mühe, dasselbe mit dem Ziel zu erreichen, teilweise HTML (Codierung ist bekannt, aber es gibt kein Meta-Tag für die Codierung) von Mutt in Firefox über Mailcap korrekt anzuzeigen.

Am Ende habe ich einen Befehl gefunden, der funktioniert und der Ihnen auch helfen kann:

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

Ich habe festgestellt, dass Firefox, wenn Ihre UTF-8-codierte Datei Stücklisten enthält, davon ausgeht, dass es sich um UTF-8 handelt. Daher habe ich den uconvBefehl zum Hinzufügen der Stücklistensignatur verwendet. Angenommen, dies %{charset}ist der Eingabe-Zeichensatz und %sder Dateiname. Das spongeTool (aus dem moreutilsPaket) hilft dabei, die Datei an der richtigen Stelle zu ändern, und das sleepist nur so, dass Mutt die Datei nicht löscht, bevor Firefox sie vollständig geladen hat.

Ich habe keine andere Option gefunden, um eine Fallback-Codierung in Firefox festzulegen.


2

Wenn es für Sie ausreicht, den Fallback nur für Offlinedateien auf UTF-8 zu setzen, können Sie zu wechseln about:configund den Wert von intl.charset.fallback.utf8_for_fileauf festlegen true.

( Quelle )


Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.