Firefox'ta yedek kodlamayı UTF-8 olarak nasıl ayarlayabilirim?


12

Bir Norveç markdown belgesi yazdım:

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

markdownKomutunu kullanarak HTML'ye dönüştürdüm :

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

Ancak, Firefox ASCII olmayan karakterleri kırarak "windows-1252" kodlamasını kullanmakta ısrar ediyor . Yedek metin kodlamasını "Geçerli Yerel Ayar için Varsayılan" olarak değiştirmeyi denedim (burada İngiltere'de ISO-8859-1 veya UTF-8 olmalıdır) "Orta Avrupa, ISO", "Orta Avrupa, Microsoft "ve" Diğer (Batı Avrupa dahil) ". Bunların hiçbiri æ, ø ve å görüntüleyemez. Unicode seçeneği yoktur. Ben de değişen denedim intl.fallbackCharsetList.ISO-8859-1çeşitli değerler sevmeye yapılandırma: yaklaşık yılında utf8, utf-8, iso-8859-1hiç şansım.

Bu markdownpaketi kullanarak :

$ pacman --query --owns "$(which markdown)"
/usr/bin/markdown is owned by markdown 1.0.1-6

ve bu yerel ayar:

$ 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=

Ben sormaya çalıştım bir çözüm için markdownkomut seviyesinde, ama bu reddedildi.


Firefox menüsünden Görünüm> Metin Kodlaması> Unicode'u ayarlamaya ne dersiniz?
Paul Nordin

@PaulNordin Bu, bir sayfa için bunu yapmanın iyi bir yoludur (bu menünün varsayılan olarak kaldırıldığından beri var olduğunu bile unutmuştum!), Ancak varsayılanı ayarladığını sanmıyorum.
l0b0

1
Oh evet, bu sadece geçici. Bence sorun başka bir yerde olabilir. Firefox, dosya türünü belirlemek için üstbilgilere veya metalara dayanır. Örneğin, test.html dosyasını içeren bir UTF-8 dosyası oluşturdum åæâéève firefox'ta açtım. Çıktı çöp oldu: åæâéè. Ancak, <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />üstüne eklersem, düzgün çıktı. Bunu bir .md dosyası için nasıl yapacağınızdan emin değilim.
Paul Nordin

Ben de firefox lauching mutt html e-posta görüntülemek için bunu yapmak istiyorum, yine de, mutt üretir html dosyası meta etiketleri olmadan utf-8 olduğunu.
pepper_chico

Yanıtlar:


4

Güncelleme: Firefox 66'dan beri düzeltildi

Dosyadan yüklenen UTF-8 kodlu HTML (ve düz metin) dosyaları: URL'ler artık <meta charset="utf-8">UTF-8 BOM'suz veya UTF-8 BOM olmadan destekleniyor

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


2016'dan Tarihi Bilgiler

Bu davranışın ardındaki mantık Mozilla hataları 815551 (varsayılan olarak UTF-8'i otomatik olarak algıla ) ve 1071816 (BOMless UTF-8 metin / düz dosyalarının dosyadan yüklenmesini destekler: URL'ler)

Anladığım kadarıyla temelde " biri her zaman kodlama tespit çok güvenilmez olarak belirtmek gerekir " aşağı kaynar .

  • Yerel olmayan içerik için protokolü kullanmalısınız. HTTP ile bu charset, Content-TypeBaşlık'ta doğru olanı sağlar
  • HTML içeriği için Ek olarak Dokümanı kullanabilirsiniz; <meta charset="utf-8" />
  • Ve başka bir şey için tek standart yol bir Malzeme Listesi belirtmek istedim ...

Mozilla geliştiricileri , tercih ayarı ekleyen bir yamaya açık gibi görünüyor , bu nedenle bir gün Firefox'ta yerel BOM'siz UTF-8 belgelerini açmak mümkün olabilir.


4

Firefox'ta yedek kodlamanın UTF-8 olarak ayarlanması kasıtlı olarak engellendi - bkz. Bugzilla.mozilla.org/show_bug.cgi?id=967981#c4.

Bunun etrafına baktığım iki yol:

1] Kaynağa bazı önemsiz yamalar uygulayın ve Tercihler | İçerik | Yazı Tipleri ve Renkler | Gelişmiş | "Yedek Metin Kodlaması" açılır menüsüne Unicode [UTF-8] seçeneği eklemek için Firefox'u kendiniz oluşturun .

2] Yerel bir [Apache] httpd sunucusu çalıştırın ve utfxdizindeki utf-8 kodlu dosyalar için Ad Tabanlı Sanal Sunucu kurun /my/utf-8/files. Daha sonra, Firefox'un dosyayı UTF-8 kodlu olarak tanıyacağı ve görüntüleyeceği bir utf-8 karakter kümesi http başlığı oluşturulabilir. Tabii ki, gerçek dosya kodlaması UTF-8 olmalı!

a) /etc/httpd/httpd.conf - ekle:

<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>

Sunucuyu yeniden başlatın - apachectl restartveya apachectl graceful.

b) / etc / hosts - utf-8 kodlu dosyalara erişmek için etki alanı adını ekleyin:

127.0.0.1   utfx

Sunucu tarafından gönderilen içerik türü bilgileri wget -S <URL> ile kontrol edilebilir:

wget -S http://utfx/test{æø,.txt,.html} 2>&1 >/dev/null | grep Content-Type

üç dosya türü için (testæø, test.txt, test.html).
Çıktı şöyle olmalıdır:

İçerik Türü: metin / düz; charset = utf-8
İçerik Türü: metin / düz; charset = utf-8
İçerik Türü: metin / html; karakter kümesi = UTF-8

c) about: config - add Yeni | Boolean:

browser.fixup.domainwhitelist.utfx  "true"

ardından utfxdosyalar listesini almak için Firefox adres çubuğuna girin .


Bugzilla bağlantısı için +1. Çözüm maalesef sorun için aşırı derecede abartılı.
l0b0

3

Sorunuzda yorumladığım gibi, Firefox'ta Mutt'tan Mailcap aracılığıyla kısmi html'yi (kodlama biliniyor ancak kodlama için meta etiket yok) doğru görüntüleme amacıyla aynı şeyi elde etmek için uğraşıyordum.

Sonunda çalışan ve size yardımcı olabilecek bir komut buldum:

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

UTF-8 kodlu dosyanız BOM içerdiğinde, Firefox'un UTF-8 olduğunu varsayarım. Bu yüzden uconvBOM imzasını eklemek için komutu kullandım . Bunun %{charset}giriş karakter seti ve %sdosya adı olduğunu varsayalım . sponge(Dan aracı moreutilspaketinin) dosyası INPLACE değişen yardımcı olur ve sleepFirefox bunu yüklenmesi biter önce Mutt dosyayı silmez sadece böyledir.

Firefox'ta yedek kodlama ayarlamak için başka bir seçenek bulamadım.


2

UTF-8'e, sadece çevrimdışı dosyalar için yedek özelliğini ayarlayarak, sizin için yeterli değilse, o zaman gidebilir about:configve değerini ayarlamak intl.charset.fallback.utf8_for_fileiçin true.

( kaynak )


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.