如何在 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”,“中歐,微軟”和“其他(包括西歐)”。這些都不能顯示æ、ø和å。沒有 Unicode 選項。我還嘗試將
intl.fallbackCharsetList.ISO-8859-1
about:config 更改為各種值,例如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
,但被拒絕了。
更新:自 Firefox 66 起已修復此問題
從文件載入的 UTF-8 編碼 HTML(和純文字)文件:現在支持不帶
<meta charset="utf-8">
UTF-8 BOM 或不帶 UTF-8 BOM 的URLhttps://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
Header中提供正確的- 對於 HTML 內容,您可以另外使用 Doctype,即
<meta charset="utf-8" />
- 對於其他任何事情,剩下的唯一標準方法是指定 BOM ……
Mozilla 開發人員似乎對添加首選項設置的更新檔持開放態度,因此有一天可能會在 Firefox 中打開本地無 BOM 的 UTF-8 文件。
在 Firefox 中將備份編碼設置為 UTF-8 已被故意阻止 - 請參閱 bugzilla.mozilla.org/show_bug.cgi?id=967981#c4。
我一直在研究的兩種解決方法是:
1]對原始碼應用一些瑣碎的更新檔並自己建構 Firefox以添加 Unicode
$$ UTF-8 $$首選項|內容|字型和顏色|高級|“備份文本編碼”下拉菜單的選項。 2]執行本地
$$ Apache $$
utfx
httpd 伺服器,並為目錄中的 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
對於三種文件類型(testæø、test.txt、test.html)。
輸出應該是:
內容類型:文本/純文字;charset=utf-8
內容類型:文本/純文字;charset=utf-8
內容類型:文本/html;字元集=utf-8
c) about:config - 添加新|布爾值:
browser.fixup.domainwhitelist.utfx "true"
然後只需
utfx
在 Firefox 地址欄中輸入即可獲取文件列表..