web-dev-qa-db-ja.com

FirefoxでフォールバックエンコーディングをUTF-8に設定する方法

私はノルウェーの値下げ文書を書きました:

$ 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」、「中央ヨーロッパ、Microsoft」に変更する設定を試みました」および「その他(西ヨーロッパを含む)」。これらのどれも、æ、ø、åを表示できません。 Unicodeオプションはありません。また、about:configのintl.fallbackCharsetList.ISO-8859-1utf8utf-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コマンドレベルでの解決策について、私は 試してみました ですが、拒否されました。

12
l0b0

更新:これはFirefox 66以降で修正されています

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

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


2016年からの歴史情報

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

私が理解している限り、基本的には「検出に信頼性が低すぎるため、常にエンコーディングを指定する必要があります」です。

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

Mozilla開発者は パッチ用に開く のように見えるため、設定が追加されるため、ある日、FirefoxでローカルのBOMのないUTF-8ドキュメントを開くことができる場合があります。

4
mleu

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

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

1]簡単な パッチ をソースに適用し、 ビルドFirefox を自分で適用して、Preferences | Content | Fonts&Colors | Advanced | "FallbackにUnicode [UTF-8]オプションを追加しますテキストエンコーディング」ドロップダウンメニュー。

2]ローカルの[Apache] httpdサーバーを実行し、ディレクトリ/my/utf-8/filesのutf-8エンコードファイル用に名前ベースの仮想サーバーutfxをセットアップします。次に、utf-8 charset 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)。
出力は次のようになります。

Content-Type: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"

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

4
Ray-V

あなたの質問でコメントしたように、FirefoxのMuttからMailcapを介して部分的な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はファイル名です。 spongeツール(moreutilsパッケージから)はファイルをインプレースで変更するのに役立ち、sleepは、Firefoxがファイルのロードを完了する前にファイルを削除しないようにするためのものです。

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

3
pepper_chico

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

ソース

2
aplaice

簡単な回避策は、エンコーディング宣言を含む完全なHTMLファイルを作成することです:

pandoc --metadata=pagetitle=Brukerveiledning --output=./brukerveiledning.html --standalone --to=html ./brukerveiledning.md

短くなった(あまり明確ではなく、警告を生成する):

pandoc --standalone ./brukerveiledning.md > ./brukerveiledning.html
0
l0b0