2012-08-03 6 views
7

मैं एक ऐसे वेब पेज के साथ काम कर रहा हूं जिसमें मैंने आईएसओ -885 9 -1 से यूटीएफ -8 में चरित्र सेट को स्विच किया है। पेज के शीर्ष इस तरह पढ़ता है:ब्राउज़र में कोई हीरा आकार का प्रश्न चिह्न के रूप में दिखाए जाने वाले एकल उद्धरण (कोई डेटाबेस या PHP)

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head> 
<title>[title of site]</title> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 

मैं केवल पेज में ASCII वर्ण का उपयोग कर रहा है, और के बाद से UTF-8 एन्कोडिंग supersets ASCII, इस ठीक होना चाहिए। हालांकि, पाठ में एकल उद्धरण काले हीरे से घिरे प्रश्न चिह्न के रूप में दिखाई दे रहे हैं। मैंने सत्यापित किया है कि ये ASCII एकल उद्धरण हैं (सीधे उद्धरण नहीं)।

मैं बहुत ऑनलाइन कि समस्या यह है कि पीएचपी, मेजिक कोट्स डेटाबेस विन्यास, आदि शामिल बहरहाल, यह एक फ्लैट HTML पृष्ठ है कि किसी भी प्रोग्राम द्वारा प्रदान की गई नहीं किया जा रहा है के लिए समाधान का वर्णन पढ़ा है।

इसके अलावा, इस समस्या को हल करने के लिए यूटीएफ -8 पर स्विच करने के लिए कहा जाता है। यह ठीक है कि मैं समस्या को पेश किया।

कृपया इस समस्या को देखने के लिए http://mch.blackcatwebinc.com/src/events.html पर देखें।

+0

ये शब्द आपके डेटाबेस पर कैसे दिखाई देते हैं? – deex

+0

पृष्ठ का स्रोत ** नहीं ** ** ASCII एकल उद्धरण है। जो कुछ भी पाठ डालता है, वहां उन्हें कुछ और में बदल दिया जाता है, अगर वास्तव में वे मूल स्रोत में एएससीआईआई एकल उद्धरण हैं (जिसे मैं ईमानदारी से संदेह करता हूं)। – tripleee

उत्तर

5

एएससीआईआई में एकमात्र उद्धरण एकल उद्धरण '(0x27 या 39) और डबल कोट "(0x22 या 33) हैं। आपके पास 8-बिट एन्कोडिंग है जो 145 (0x91) और 146 पर उद्धरण देती है (0x92) CP1252 कहा जाता है;। यह विंडोज के लिए मानक 8 बिट पश्चिमी यूरोपीय एन्कोडिंग क्या आप चाहते हैं UTF-8 है, तो आप, UTF-8 में है कि बदलने की आवश्यकता यह वैध UTF-8 नहीं है के बाद से, वैध UTF-8 का उपयोग करता है 127 (0x7F) से ऊपर वर्णों के लिए एकाधिक बाइट्स, और यू + 2018 और यू + 201 9 में क्रमशः उद्घाटन और समापन उद्धरण रखता है।

+0

आप सभी सही हैं। मैंने विम में पाठ की समीक्षा की थी, जो 'मुखौटा लक्षण' - कोट्स को सिंगल कोट्स के रूप में दिखा रहा है क्योंकि यह फ़ाइल को सीपी 1252 के रूप में पढ़ता है। मैंने एक 'सेट एन्कोडिंग = utf8' किया और फ़ाइल को सेव किया, और सिंगल कोट्स <92> - यानी, उनके सीपी 1252 हेक्स समकक्ष के रूप में उद्धरण दिखाई दिए। जब ASCII (यूटीएफ -8) एकल उद्धरण में बदल दिया गया, तो सब सही था। यूटीएफ -8 में सभी फाइलों को सहेजने के लिए मुझे अपना आईडीई, कोड लॉबस्टर सेट करने की भी आवश्यकता है। – blackcatweb

0

फर्क सिर्फ इतना है कि मैं अपना टैग और साइट मैं पर काम कर रहा हूँ पर एक के बीच देखने अर्धविराम के बाद जगह नहीं है और कहा कि utf तुम्हारा पर लोअरकेस है। यूटीएफ पूंजीकरण का प्रयास करें।

+0

बस इसे स्थानीय रूप से आजमाया - कोई प्रभाव नहीं। फिर भी उन प्रश्नों का निशान है। – blackcatweb

+0

-1 केस यहां महत्वपूर्ण नहीं है। – tripleee

1
W3C के अनुसार

, meta charset

सिर तत्व

के शीर्ष http://www.w3.org/International/questions/qa-html-encoding-declarations#metacontenttype

तो से अधिक से अधिक निकट दिखाई देनी चाहिए, मैं देने का प्रयास हो सकता है title से ऊपर टैग।

इसके अलावा, जैसा कि @ user1505373, UTF द्वारा पहले उत्तर में वर्णित है, हमेशा पूंजीकृत होता है और मैंने देखा कि किसी भी उदाहरण में = के बाद कोई जगह नहीं है।

0

सभी ASCII प्रिंट करने योग्य पात्रों के पास उनके समकक्ष HTML इकाई कोड हैं। इन पात्रों में से कुछ आम तौर पर सबसे आम ओएस टाइपफेस द्वारा समर्थित हैं, कुछ प्रतीकों अपने प्रतिपादन मुद्दा करने के लिए हमें लाने के रूप में वर्गीकृत कर रहे हैं।

क्या आप माना जाता है कि वहाँ एक एकल उद्धरण को बंद करने, और आदेश में यह ठीक ही मुद्रित करने के लिए आप का उपयोग करना चाहिए है यह इकाई कोड, या & # 146 है, क्रमशः। यह एक उद्घाटन एकल उद्धरण होने के लिए बदल जाता है, तो आप & # 145 का उपयोग करना चाहिए; बजाय।

नोट, वहाँ दो ASCII वर्ण (और some more) के लिए कोई HTML इकाई नाम है ताकि आप इकाई कोड संस्करण चुनते आवश्यक होता है।

+0

ASCII बंद एकल बोली जैसी कोई चीज़ नहीं है। 128 से नीचे वर्ण केवल ASCII हैं। – prosfilaes

+0

यदि आपके पास 21 वीं शताब्दी का नाम है, तो मैं खुशी से उपरोक्त प्रतिक्रिया अपडेट करूंगा। कृपया, केवल apostrophe मत कहो। – Xhezairi

+3

यह एक बंद एकल उद्धरण है। इसे सीपी 1252 या यूनिकोड या शायद कई अन्य चरित्र एन्कोडिंग में एन्कोड किया जा सकता है। यह ASCII नहीं है। – prosfilaes

1

आपका स्रोत कोड UTF-8 लेकिन लेटिन 1 CP1252 में सहेजा नहीं है, और उन उद्धरण नहीं सरल उद्धरण लेकिन U + 2019 सही एकल उद्धरण चिह्न (लेटिन 1 में encoded) कर रहे हैं। स्रोत फ़ाइल को यूटीएफ -8 में सहेजें और यह काम करेगा।

+1

यह लैटिन -1 नहीं है। यह विंडोज कोडपेज 1252 है। अधिकांश उद्देश्यों के लिए, सीपी 1252 लैटिन -1 का एक सुपरसेट है, लेकिन वे अभी भी वही नहीं हैं। – prosfilaes

+0

ठीक है, जो भी हो, यह यूटीएफ -8 नहीं है, भले ही इसे यूटीएफ -8 के रूप में घोषित किया गया हो। मैंने बस ब्राउज़र को लैटिन -1 में बदल दिया और यह सही ढंग से प्रदर्शित हुआ, जो कि घोषित एन्कोडिंग का शास्त्रीय मामला है और वास्तविक एन्कोडिंग समान नहीं है। – deceze

+0

सीपी 1252 का प्रयोग अक्सर लैटिन -1 के लिए किया जाता था कि अधिकांश ब्राउज़र लैटिन -1 का इलाज करते हैं जैसे कि यह सीपी 1252 था, और एचटीएमएल 5 अनिवार्य है कि वे करते हैं। – prosfilaes

1

सबसे आसान फिक्स यूटीएफ -8 को विंडोज -1252 में meta टैग में बदलना है। यह काम करता है, क्योंकि सर्वर Content-Type शीर्षलेख में कोई एन्कोडिंग की घोषणा नहीं करता है, इसलिए ब्राउज़र और अन्य क्लाइंट meta टैग में निर्दिष्ट एक का उपयोग करेंगे।

नाम विंडोज -1252 8-बिट विंडोज लैटिन -1 एन्कोडिंग के लिए पसंदीदा एमआईएम नाम है, जिसे सीपी 1252 और कुछ अन्य नाम भी कहा जाता है (अक्सर "एएनएसआई" के रूप में गलत तरीके से प्रस्तुत किया जाता है)।

जैसा कि @deceze बताता है, डेटा का वास्तविक एन्कोडिंग विंडोज -1252 है, यूटीएफ -8 नहीं। आप फ़ाइल को अपने संलेखन सॉफ़्टवेयर में उपयुक्त कमांड के साथ सहेजकर यूटीएफ -8 में वास्तविक एन्कोडिंग को वैकल्पिक रूप से बदल सकते हैं। लेकिन वास्तव में क्या मायने रखता है कि घोषित एन्कोडिंग वास्तविक से मेल खाता है।

फिर भी एक और संभावना है कि एस्ट्रोफ़े के लिए "भाग निकलें", जैसे कि &rsquo;। वे एन्कोडिंग से स्वतंत्र रूप से काम करते हैं, लेकिन वे स्रोत कोड को कम सुगम बनाते हैं।

+0

यह मेरे लिए काम किया, धन्यवाद। :) – InkHeart

संबंधित मुद्दे