फ़ायरफ़ॉक्स में UTF-8 में फ़ॉलबैक एन्कोडिंग कैसे सेट करें?


12

मैंने एक नॉर्वेजियन मार्कडाउन दस्तावेज़ लिखा है:

$ 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

हालांकि, फ़ायरफ़ॉक्स "विंडोज़ -1252" एन्कोडिंग का उपयोग करने पर जोर देता है, गैर-एएससीआईआई पात्रों को तोड़ता है। मैंने "डिफॉल्ट फॉर करंट लोकल" (जो कि यूके में यहां ISO-8859-1 या UTF-8 होना चाहिए) से "सेंट्रल यूरोपियन, आईएसओ", "सेंट्रल यूरोपियन, माइक्रोसॉफ्ट" के लिए फॉलबैक टेक्स्ट एनकोडिंग को बदलने की कोशिश की है। ", और" अन्य (incl। पश्चिमी यूरोपीय) "। इनमें से कोई भी æ, ø और å प्रदर्शित नहीं कर सकता है। कोई यूनिकोड विकल्प नहीं हैं। मैं भी बदल रहा है की कोशिश की गए intl.fallbackCharsetList.ISO-8859-1config करने के लिए विभिन्न मूल्यों की तरह: के बारे में में 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 , लेकिन वह अस्वीकार कर दिया गया।


फ़ायरफ़ॉक्स मेनू से व्यू> टेक्स्ट एन्कोडिंग> यूनिकोड सेट करने के बारे में क्या?
पॉल नॉर्डिन

@PaNNordin यह एक पृष्ठ के लिए करने का एक अच्छा तरीका है (मैं उस मेनू को भूल गया था, क्योंकि वे इसे डिफ़ॉल्ट रूप से मौजूद थे!), लेकिन मुझे नहीं लगता कि यह डिफ़ॉल्ट सेट करता है।
l0b0

1
अरे हाँ, यह केवल अस्थायी है। मुझे लगता है कि समस्या कहीं और हो सकती है। फ़ायरफ़ॉक्स फ़ाइल प्रकार निर्धारित करने के लिए हेडर या मेटा पर निर्भर करता है। उदाहरण के लिए, मैंने एक UTF-8 फ़ाइल test.html युक्त बनाया åæâéèऔर इसे फ़ायरफ़ॉक्स में खोला। आउटपुट कचरा था åæâéè:। हालांकि, अगर मैं <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />शीर्ष में जोड़ता हूं, तो यह ठीक से आउटपुट करता है। निश्चित नहीं है कि आप .md फ़ाइल के लिए यह कैसे करेंगे।
पॉल नॉर्डिन

मैं यह भी करना चाहता हूँ कि फ़ायरफ़ॉक्स की सराहना करते हुए म्यूट से html ईमेल देखने में सक्षम हो, फिर भी, html फ़ाइल म्यूट का उत्पादन मेटा टैग के बिना utf-8 है।
काली मिर्च_ मिर्च

जवाबों:


4

अद्यतन: यह फ़ायरफ़ॉक्स 66 के बाद से तय किया गया है

UTF-8-एन्कोडेड HTML (और सादा पाठ) फ़ाइल से भरी हुई फाइलें: URL अब बिना <meta charset="utf-8">या UTF-8 BOM के समर्थित हैं

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


2016 से ऐतिहासिक जानकारी

इस व्यवहार के पीछे का तर्क मोज़िला बग्स 815551 (डिफ़ॉल्ट रूप से ऑटोडेटेक्ट यूटीएफ -8 ) और 1071816 में वर्णित है (समर्थन लोडिंग बोम्लेस यूटीएफ -8 टेक्स्ट / फाइल से सादा फाइलें: यूआरएल)

जहां तक ​​मैं समझता हूं कि यह मूल रूप से " किसी को हमेशा एन्कोडिंग निर्दिष्ट करना चाहिए, क्योंकि पता लगाना बहुत अविश्वसनीय है "।

  • गैर-स्थानीय सामग्री के लिए आपको प्रोटोकॉल का लाभ उठाना चाहिए। HTTP के साथ यह हैडर charsetमें सही प्रदान करेगाContent-Type
  • HTML सामग्री के लिए आप अतिरिक्त रूप से Doctype का उपयोग कर सकते हैं, अर्थात <meta charset="utf-8" />
  • और कुछ के लिए केवल मानक तरीका एक बोम निर्दिष्ट करने के लिए छोड़ दिया ...

मोज़िला देवता एक ऐसे पैच के लिए खुले प्रतीत होते हैं जो एक प्राथमिकता सेटिंग को जोड़ता है, इसलिए एक दिन फ़ायरफ़ॉक्स में स्थानीय बीओएम-कम यूटीएफ -8 दस्तावेजों को खोलना संभव हो सकता है।


4

फ़ायरफ़ॉक्स में UTF-8 में फ़ॉलबैक एन्कोडिंग सेट करना जानबूझकर अवरुद्ध किया गया है - Bugzilla.mozilla.org/show_bug.cgi?id=967981#c4 देखें।

इसके आस-पास के दो तरीके जो मैं देख रहा हूं वे हैं:

1] स्रोत के लिए कुछ तुच्छ पैच लागू करें और प्राथमिकताएं के लिए एक यूनिकोड [UTF-8] जोड़ने के लिए अपने आप को फ़ायरफ़ॉक्स का निर्माण करें। सामग्री। फ़ॉन्ट्स और रंग | उन्नत | "फ़ॉलबैक पाठ एन्कोडिंग" ड्रॉप-डाउन मेनू।

2] utfxनिर्देशिका में utf-8 एन्कोडेड फ़ाइलों के लिए एक स्थानीय [Apache] httpd सर्वर चलाएं और एक नाम-आधारित वर्चुअल सर्वर सेट करें /my/utf-8/files। एक utf-8 चारसेट http हेडर तब उत्पन्न किया जा सकता है, जिसे फ़ायरफ़ॉक्स फ़ाइल को 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

बी) / आदि / मेजबान - 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; charset = utf-8

c) के बारे में: config - नया जोड़ें। बूलियन:

browser.fixup.domainwhitelist.utfx  "true"

तो बस utfxफाइल्स लिस्ट पाने के लिए फ़ायरफ़ॉक्स एड्रेस बार में एंटर करें ..


Bugzilla लिंक के लिए +1। समस्या के लिए समाधान दुर्भाग्य से बहुत अधिक हैं।
l0b0

3

जैसा कि मैंने आपके प्रश्न में टिप्पणी की है, मैं मेल्कॉ के माध्यम से फ़ायरफ़ॉक्स में 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 है। इसलिए मैंने uconvBOM हस्ताक्षर जोड़ने के लिए कमांड का उपयोग किया है । मान लें कि %{charset}इनपुट चारसेट है और %sफ़ाइल नाम है। sponge(से उपकरण moreutilsपैकेज) फ़ाइल inplace बदलते मदद करता है और sleepसिर्फ इतना है पहले फ़ायरफ़ॉक्स यह लोड होना पूर्ण हो मठ फ़ाइल को नष्ट नहीं करता है।

मुझे फ़ायरफ़ॉक्स में फ़ॉलबैक एन्कोडिंग सेट करने के लिए कोई अन्य विकल्प नहीं मिला है।


2

हैं, तो केवल ऑफ़लाइन फ़ाइलों के लिए वापस आने की स्थापना UTF-8 में, आप के लिए पर्याप्त है, तो आप पर जा सकते हैं about:configऔर का मान सेट intl.charset.fallback.utf8_for_fileकरने के लिए true

( स्रोत )


0

एन्कोडिंग घोषणा के साथ एक संपूर्ण HTML फ़ाइल बनाने के लिए एक सरल समाधान है :

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

छोटा (कम स्पष्ट और चेतावनी पैदा करता है):

pandoc --standalone ./brukerveiledning.md > ./brukerveiledning.html
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.