HTML में यूनिकोड प्रतीकों को प्रदर्शित करना


89

मैं बस एक HTML पृष्ठ में टिक (and) और क्रॉस (symbols) प्रतीकों को प्रदर्शित करना चाहता हूं, लेकिन यह एक बॉक्स या goop के रूप में दिखाता है "- जाहिर है कि एन्कोडिंग के साथ कुछ करना है।

मैंने utf-8 दिखाने के लिए मेटा टैग सेट किया है, लेकिन जाहिर है कि मुझे कुछ याद आ रहा है।

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

संपादित करें / समाधान: फायरबग की गई टिप्पणियों से, मैंने पाया कि हेडर मेरे पृष्ठ द्वारा पारित किए जा रहे थे, वास्तव में "सामग्री-प्रकार: पाठ / एचटीएमएल" और यूटीएफ -8 नहीं थे। नोटपैड ++ का उपयोग करते हुए फ़ाइल प्रारूप को देखते हुए मेरी फ़ाइल को "बिना BOM के UTF-8" के रूप में स्वरूपित किया गया था। इसे केवल UTF-8 में बदलना अब प्रतीकों को सही ढंग से दिखाता है ... लेकिन फायरबग अभी भी उसी सामग्री-प्रकार को इंगित करता है।

जवाबों:


56

आपको सुनिश्चित करना चाहिए कि HTTP सर्वर हेडर सही हैं।

विशेष रूप से, शीर्ष लेख:

Content-Type: text/html; charset=utf-8

उपस्थित होना चाहिए।

यदि HTTP हेडर मौजूद है, तो मेटा टैग को ब्राउज़रों द्वारा अनदेखा किया जाता है।

यह भी सुनिश्चित करें कि आपकी फ़ाइल वास्तव में UTF-8 के रूप में कूटबद्ध की गई है, इसे परोसने से पहले, निम्नलिखित की जांच / कोशिश करें:

  • सुनिश्चित करें कि आपका संपादक इसे UTF-8 के रूप में सहेजे।
  • अपने एफ़टीपी सुनिश्चित करें या किसी भी फ़ाइल स्थानांतरण कार्यक्रम फ़ाइल के साथ गड़बड़ नहीं करता है।
  • HTML एन्कोडेड संस्थाओं के साथ प्रयास करें, जैसे &#uuu;
  • वास्तव में निश्चित होने के लिए, फ़ाइल को हेक्सडंप करें और चरित्र के रूप में देखें, it के लिए, यह E2 9C 94 होना चाहिए।

नोट: यदि आप एक यूनिकोड वर्ण का उपयोग करते हैं, जिसके लिए आपका सिस्टम एक ग्लिफ़ नहीं खोज सकता (उस वर्ण के साथ कोई फ़ॉन्ट नहीं), तो आपके ब्राउज़र को प्रश्न चिह्न या प्रतीक जैसे कुछ ब्लॉक प्रदर्शित करने चाहिए। लेकिन अगर आप अपने जैसे कई रोमन चरित्र देखते हैं, तो यह एन्कोडिंग समस्या को दर्शाता है।


दरअसल, मेटा टैग को नजरअंदाज नहीं किया जाता है, लेकिन HTTP हेडर को प्राथमिकता दी जाती है। उस सटीक के लिए धन्यवाद कोनराड।

8
ध्यान दें कि contentसीएसएस ::beforeचयनकर्ता की संपत्ति में एक यूनिकोड वर्ण का उपयोग करने के लिए , किसी को बैकस्लैश नोटेशन का उपयोग करने की आवश्यकता होगी। जैसे: 'और # 2713' के बजाय '\ 2713'।
फेबियन सन्नुअर्ट

18

मुझे पता है कि एक उत्तर पहले ही स्वीकार कर लिया गया है, लेकिन कुछ चीजों को इंगित करना चाहता था।

content-typeऔर सेट करना charsetस्पष्ट रूप से एक अच्छा अभ्यास है, इसे सर्वर पर करना ज्यादा बेहतर है, क्योंकि यह आपके आवेदन में निरंतरता सुनिश्चित करता है।

हालाँकि, मैं UTF-8केवल तभी उपयोग करूंगा जब मेरे एप्लिकेशन की भाषा बहुत सारे वर्णों का उपयोग करती है जो केवल UTF-8चारसेट में उपलब्ध हैं । यदि आप एक मामले में एक यूनिकोड चरित्र या प्रतीक दिखाना चाहते हैं, तो आप charsetअपने पृष्ठ के परिवर्तन के बिना ऐसा कर सकते हैं ।

HTMLरेंडरर्स हमेशा उन प्रतीकों को प्रदर्शित करने में सक्षम होते हैं जो पेज के एन्कोडिंग कैरेक्टर सेट का हिस्सा नहीं होते हैं, जब तक आप प्रतीक का उल्लेख नहीं करते हैं numeric character reference (NCR)। अजीब लगता है लेकिन इसका सच है।

इसलिए, भले ही आपका htmlहेडर ऐसा हो, जिसमें कहा गया हो कि उसमें ansiया किसी भी isoवर्णमाला की एन्कोडिंग है , आप दशमलव में - और # 10003 में उसके html वर्ण संदर्भ का उपयोग करके चेक मार्क प्रदर्शित कर सकते हैं; या हेक्स में - & # x2713;

तो यह समझना थोड़ा मुश्किल है कि आप अपने पृष्ठों पर इस मुद्दे का सामना क्यों कर रहे हैं। क्या आप देख सकते हैं कि एनसीआर का मूल्य सही है या नहीं, यह एक अच्छा संदर्भ है http://www.fileformat.info/info/unicode/char/2713/index.htm


6
"हालांकि, मैं यूटीएफ -8 का उपयोग केवल तभी करूंगा जब मेरे आवेदन की भाषा बहुत सारे पात्रों का उपयोग करती है जो केवल यूटीएफ -8 वर्णमाला में उपलब्ध हैं" क्यों? स्विच करने में नुकसान क्या है?
डंबलड

3
@ डंबलडैड: बहुत अच्छा सवाल है, मुझे लगता है कि मैं अपने पूर्वाग्रह को अपना जवाब दूंगा। मेरे कहने का मतलब यह था कि अगर आपका पूरा आवेदन पहले से ही नॉन यूटीएफ -8 है, तो इसे बदलने से एक ही पेज के लिए आवेदन की वीडियोग्राफी बहुत ज्यादा काम आ सकती है। इसके अलावा, यदि आपकी प्रोग्रामिंग भाषा और सामग्री को utf-8 वर्णों की आवश्यकता नहीं है, तो आप गलती से एक जंक चरित्र को कॉपी कर सकते हैं, जो आपके संपादक के साथ ठीक होगा (क्योंकि utf-8 मोड में), लेकिन निष्पादन के दौरान कोड विफल हो जाएगा। कहा जा रहा है कि, जब आप कर सकते हैं, अपने एन्कोडिंग और चार सेट
अक्षय

6

सुनिश्चित करें कि आप वास्तव में फ़ाइल को UTF-8 के रूप में सहेजते हैं, &#nnn;विशेष वर्णों के लिए वैकल्पिक रूप से HTML संस्थाओं ( ) का उपयोग करें ।


Doesn't के लिए एक HTML संस्था प्रतीत नहीं होती है या क्या मैंने इसे याद किया है? आप फ़ाइल को वास्तव में UTF-8 के रूप में कैसे सहेजते हैं और आप कैसे जांच सकते हैं?
पीटर क्रेग

@Peter: एक सभ्य संपादक का उपयोग करके। अधिकांश टेक्स्ट एडिटर्स के पास फ़ाइल एन्कोडिंग निर्दिष्ट करने के लिए उनके "सेव एज़" डायलॉग में एक विकल्प होता है, या उनके मेनू में कहीं और एक विकल्प छिपा होता है। विम fileencodingसेटिंग का उपयोग करता है ।
कोनराड रुडोल्फ

8
@ पेटर, आप इसके कोड द्वारा किसी भी वर्ण का उल्लेख कर सकते हैं। कोशिश करें & # x2714; एक टिक के लिए।
डैन डायर

utf-8 के रूप में सहेजें। दिलचस्प अवधारणा। यदि आप स्थैतिक HTML पृष्ठ बना रहे हैं तो अच्छी तरह से काम करता है। लेकिन ... गतिशील वेबपृष्ठों के बारे में क्या? यह यूनिकोड / utf-8 / चौड़े चरित्र का सामान वास्तव में मेरे लिए काफी भ्रमित करने वाला है। मेरा बैकएंड कोड perl है। http हैडर ठीक से सेट किया गया है और इसलिए html हैडर है। W3C अंतर्राष्ट्रीयकरण परीक्षक पुष्टि करता है कि मेरे पास utf-8 के लिए दस्तावेज़ सेट है। CaSinG क्या मायने रखता है? अंत में, टेक्स्ट इनपुट बॉक्स के बारे में क्या? मैं अभी भी जाता है! :(
जेरेट लॉयड

पिछली टिप्पणी के परिशिष्ट: मेरा डेटाबेस दिखाता है कि डेटा सही ढंग से दर्ज किया गया है, और अक्षर सही ढंग से प्रदर्शित होते हैं। इसलिए, डेटाबेस मुद्दा नहीं। मेरी पर्ल स्क्रिप्ट (या बल्कि, संपादक) स्क्रिप्ट को utf-8 के रूप में सहेजने के लिए सेट है। मेरा सर्वर, Apache2, मैं काफी निश्चित हूं कि कोई हस्तक्षेप नहीं कर रहा है, या सही सेट है। इस सब ने कहा, अभी भी यकीन नहीं है कि क्यों चारपाइयों हैं। ओह। वहाँ एक बेहतर तरीका है
Jarett लॉयड

5

निकोलस द्वारा प्रस्तावित के विपरीत, metaटैग वास्तव में ब्राउज़रों द्वारा अनदेखा नहीं किया गया है। हालाँकि, दस्तावेज़ में टैग Content-Typeकी उपस्थिति पर HTTP हेडर की हमेशा पूर्वता होती है meta

इसलिए सुनिश्चित करें कि आप या तो HTTP हेडर के माध्यम से सही एन्कोडिंग भेजते हैं, या इस HTTP हेडर को बिल्कुल भी नहीं भेजें (अनुशंसित नहीं)। metaटैग मुख्य रूप से स्थानीय दस्तावेजों कौन-सी HTTP यातायात के माध्यम से नहीं भेजा जाता है के लिए फ़ॉलबैक विकल्प है।

HTML संस्थाओं का उपयोग करना भी एक समाधान माना जाना चाहिए - जो वास्तविक समस्या के बारे में टिप कर रहा है। वेब सर्वर को ठीक से कॉन्फ़िगर करना बहुत सारे उपद्रव को रोकता है।


0

मुझे लगता है कि यह एक फ़ाइल समस्या है, आपने अपनी फ़ाइल को लैटिन -1 की तरह 1-बाइट एन्कोडिंग में सहेजा है। Google ने आपके संपादक और utf-8 में फ़ाइलों को कैसे सेट किया जाए।

मुझे आश्चर्य है कि ऐसे संपादक क्यों हैं जो utf-8 के लिए डिफ़ॉल्ट नहीं हैं।

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