FirefoxでフォールバックエンコーディングをUTF-8に設定するにはどうすればよいですか?


12

私はノルウェーのマークダウン文書を書きました:

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

次のmarkdownコマンドを使用して、HTMLに変換しました。

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

ただし、Firefoxは「windows-1252」エンコーディングの使用を主張し、非ASCII文字を破壊します。「現在のロケールのデフォルト」(ここでは英国ではISO-8859-1またはUTF-8である必要があります)から「中央ヨーロッパ、ISO」、「中央ヨーロッパ、マイクロソフト」にフォールバックテキストエンコーディングを変更しようとしました「」および「その他(西ヨーロッパを含む)」。これらのどれもæ、ø、åを表示できません。Unicodeオプションはありません。私はまた、変更しようとしたintl.fallbackCharsetList.ISO-8859-1程度では:のような様々な値に設定utf8utf-8iso-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コマンドレベルが、それは拒否されました。


Firefoxメニューから[表示]> [テキストエンコーディング]> [Unicode]を設定するのはどうですか?
ポールノルダン

@PaulNordinそれは1ページでそれを行うには良い方法です(デフォルトでメニューを削除してからメニューが存在することすら忘れていました!)が、デフォルトを設定するとは思いません。
l0b0

1
ああ、それは一時的なものです。問題は他の場所にあると思います。Firefoxは、ヘッダーまたはメタに依存してファイルタイプを判別します。たとえばåæâéè、Firefox を含むUTF-8ファイルtest.htmlを作成して開きました。出力はガベージでした:åæâéè。ただし、<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />上部に追加すると、適切に出力されます。.mdファイルに対してこれをどのように行うかはわかりません。
ポールノルディン

また、Firefoxを起動することでmuttからhtmlメールを表示できるようにしたいのですが、muttが生成するhtmlファイルはメタタグなしのutf-8です。
pepper_chico

回答:


4

更新:これはFirefox 66以降に修正されました

ファイルからロードされたUTF-8エンコードされたHTML(およびプレーンテキスト)ファイル:URLは<meta charset="utf-8">、UTF-8 BOM なしでサポートされるようになりました

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


2016年の履歴情報

この動作の背後にある理由は、Mozillaバグ815551(デフォルトでUTF-8を自動検出)および 1071816(ファイルからのBOMless UTF-8テキスト/プレーンファイルのロードをサポート:URL)

私が理解する限り、基本的には「検出があまりにも信頼できないので、常にエンコーディングを指定する必要があります」に要約されます

  • 非ローカルコンテンツの場合は、プロトコルを活用する必要があります。HTTPを使用するcharsetと、Content-Typeヘッダーに正しい情報が提供されます。
  • HTMLコンテンツの場合、Doctypeを追加で使用できます。 <meta charset="utf-8" />
  • そして、他のすべての場合に残される唯一の標準的な方法は、BOMを指定することです...

Mozilla開発者は、設定を追加するパッチ公開しているようです。そのため、いつかFirefoxでローカルのBOMなしのUTF-8ドキュメントを開くことができるかもしれません。


4

FirefoxでフォールバックエンコーディングをUTF-8に設定することは意図的にブロックされています-bugzilla.mozilla.org/show_bug.cgi?id=967981#c4を参照してください。

私がこれまで見てきた2つの方法は次のとおりです。

1]簡単なパッチをソースに適用し、Firefoxを自分でビルドして、[環境設定] | [コンテンツ] | [フォントと色] | [詳細] | [フォールバックテキストエンコーディング]ドロップダウンメニューに追加します。

2]ローカル[Apache] httpdサーバーを実行し、utfxディレクトリ内のutf-8エンコードファイルに対して名前ベースの仮想サーバーをセットアップします/my/utf-8/files。その後、utf-8文字セットhttpヘッダーを生成できます。これにより、FirefoxはUTF-8エンコードとしてファイルを認識して表示します。もちろん、実際のファイルエンコーディングはUTF-8でなければなりません!

a)/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

b)/ 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

3つのファイルタイプ(testæø、test.txt、test.html)用。
出力は次のようになります。

コンテンツタイプ:text / plain; charset = utf-8
Content-Type:text / plain; charset = utf-8
Content-Type:text / html; charset = utf-8

c)about:config-New | Booleanを追加:

browser.fixup.domainwhitelist.utfx  "true"

次にutfx、Firefoxのアドレスバーに入力して、ファイルリストを取得します。


Bugzillaリンクの+1。残念ながら、解決策は問題に対して非常にやり過ぎです。
-l0b0

3

あなたの質問でコメントしたように、Mailcapを介してFirefoxのMuttから部分HTML(エンコードは知られていますが、エンコード用のメタタグはありません)を正しく表示する目的で同じものを取得するのに苦労しました。

最後に、機能するコマンドを見つけました。これはあなたにも役立つかもしれません:

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

UTF-8でエンコードされたファイルにBOMが含まれている場合、FirefoxはそれがUTF-8であると想定することを発見しました。そのため、このuconvコマンドを使用してBOM署名を追加しました。これ%{charset}が入力文字セットで%sあり、ファイル名であると想定します。spongemoreutilsパッケージからの)このツールは、ファイルをインプレースで変更するのに役立ちますsleep。これは、Firefoxがロードを完了する前にMuttがファイルを削除しないようにするためです。

Firefoxでフォールバックエンコーディングを設定する他のオプションは見つかりませんでした。


2

オフラインファイルのみのフォールバックをUTF-8に設定するだけで十分な場合は、に移動しabout:configて値をintl.charset.fallback.utf8_for_fileに設定できますtrue

ソース


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.