私はノルウェー語のマークダウン文書を作成しました:
$ 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
た。utf8
utf-8
iso-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]オプションを直接追加します。
utfx
2]ローカル[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"
その後、utfx
Firefoxアドレスバーに入力するとファイルのリストが表示されます。
答え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