Firefoxで代替エンコーディングをUTF-8に設定するには?

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-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拒否されました。

答え1

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

私が調査した2つの解決策は次のとおりです。

1]マイナーなものを適用斑点ソースへFirefoxの構築基本設定|フォントと色| [代替テキストエンコーディング]ドロップダウンメニューにUnicode [UTF-8]オプションを直接追加します。

utfx2]ローカル[Apache] httpdサーバーを実行し、ディレクトリにあるutf-8エンコーディングファイルの名前ベースの仮想サーバーを設定します/my/utf-8/files。その後、FirefoxはファイルをUTF-8エンコーディングとして認識して表示するutf-8文字セットhttpヘッダーを生成できます。もちろん、実際のファイルエンコーディングは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
コンテンツタイプ:text / plain
;

c) about:config - 新規追加|ブール:

browser.fixup.domainwhitelist.utfx  "true"

その後、utfxFirefoxアドレスバーに入力するとファイルのリストが表示されます。

答え2

更新:この問題は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(ファイル:URLからのBOMなしのUTF-8テキスト/一般テキストファイルのロードをサポート)

私が理解したのは基本的に」検出が不安定であるため、常にエンコードを指定する必要があります。」。

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

Mozillaの開発者はオープンパッチいつかFirefoxでローカルBOMのないUTF-8ドキュメントを開くように設定を追加しました。

答え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ファイル名であると仮定します。このspongeツール(パッケージ)は、Firefoxがロードを完了する前にMuttがファイルを削除しないように、ファイルを所定の場所moreutilsに変更するのに役立ちます。sleep

Firefoxで代替エンコーディングを設定する他のオプションが見つかりませんでした。

答え4

簡単な解決策はエンコード宣言を含む完全なHTMLファイルの生成:

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

短縮(あまり明確ではなく警告生成):

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

関連情報