2010-08-28 11 views
7

क्या phpquery :: newDocument के माध्यम से इस HTML मार्कअप को चलाने के बाद अनुचित रूप से प्रदर्शित वर्णों को ठीक करने का कोई तरीका है? आधुनिक महिला के साथ क्लासिक्स के चारों ओर डबल कोट्स हैं- मूल दस्तावेज़ में जो phpquery के साथ नया दस्तावेज़ बनाने के बाद अनुचित रूप से प्रदर्शित होता है।PHP दस्तावेज़ पर गलत तरीके से प्रदर्शित एन्कोडिंग को ठीक करें php

//Original document is UTF-8 encoded 
$raw_html = '<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body><p>Mr. Smith of Bangkok celebrated the “Classics with modern Woman”.</p></body></html>'; 
print($raw_html); 

$aNew_document = phpQuery::newDocument($raw_html); 
print($aNew_document); 

मूल आउटपुट: बैंकॉक के श्री स्मिथ "आधुनिक औरत के साथ क्लासिक्स" मनाया।

नया दस्तावेज़ आउटपुट: बैंकाक के श्री स्मिथ ने आधुनिक महिला के साथ क्लासिक्स मनाया।

उत्तर

22
  1. आप UTF-8 without BOM एन्कोडिंग के साथ पेज को बचाने के लिए की जरूरत है।
  2. अपनी स्क्रिप्ट के शीर्ष पर इस शीर्षलेख जोड़ें:

    header("Content-Type: text/html; charset=UTF-8");

[संपादित करें]: कैसे UTF-8 के रूप में फ़ाइलें सहेजने के लिए बीओएम बिना:

ओपी अनुरोध पर, यहाँ कैसे आप Windows पर क्या कर सकते हैं:

  1. डाउनलोड Notepad++। यह एक अद्भुत टेक्स्ट-एडिटर है जिसका उपयोग आप करना चाहिए।
  2. इसे इंस्टॉल करें।
  3. नोटपैड ++ में PHP स्क्रिप्ट खोलें जिसमें यह कोड शामिल है। वह पृष्ठ जहां आप सभी कोडिंग कर रहे हैं। हां, वह फाइल आपके कंप्यूटर पर।
  4. शीर्ष पर एन्कोडिंग मेनू से, नोटपैड ++ में, "बीओएम के बिना यूटीएफ -8 में कनवर्ट करें" का चयन करें।
  5. फ़ाइल को सहेजें।
  6. एफ़टीपी या जो भी आप उपयोग करते हैं, अपने वेबसर्वर पर अपलोड करें।
  7. अब, उस स्क्रिप्ट को चलाएं।
+0

+1 के रूप में सहेजी नहीं गई है क्योंकि मुझे विंडोज़ पर होने पर पहले यह समस्या आई थी .... यह Windows बचत फ़ाइलों को CP1251 है (या जो भी कोड पेज)। सब कुछ हमेशा यूटीएफ -8 के रूप में सहेजा जाना चाहिए और सामग्री यूटीएफ -8 का उपयोग करके भी भेजी जानी चाहिए। लिनक्स में यह समस्या नहीं है :) –

+0

@ यैनिक, यहां वही। – shamittomar

+0

जोड़ने का प्रयास किया गया हैडर ("सामग्री-प्रकार: टेक्स्ट/एचटीएमएल; वर्णसेट = यूटीएफ -8"); - स्क्रिप्ट के शीर्ष पर, लेकिन यह ठीक नहीं हुआ। क्या आप इस उदाहरण में सहेजे जा रहे पृष्ठ द्वारा अपना क्या मतलब बता सकते हैं? मुझे नहीं लगता कि पृष्ठ कभी भी सहेजा गया है, लेकिन phpquery :: newdocument() द्वारा पुन: निर्मित होने से पहले लिनक्स सर्वर पर स्मृति में मौजूद है। यदि संभव हो तो आप दिखा सकते हैं कि इस कोड को सही तरीके से कैसे सम्मिलित किया जाए? या सही एन्कोडिंग के साथ दस्तावेज़ को कैसे सहेजना है? मैं कुछ गलत कर रहा हूँ। धन्यवाद – JMC

1

आप <head> तत्व में है:

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

अगले पाठ्यक्रम इन पात्रों दिखाने के लिए HTML संस्थाओं का उपयोग करने के लिए होगा।

+0

यह समस्या को हल नहीं करेगा यदि फ़ाइल स्वयं यूटीएफ -8 –

2

मैं एक ही समस्या थी, लेकिन यह काम करने

1

मैं phpQuery का उपयोग कर एक ही समस्या थी लगते हैं जब मैं अंत करने के लिए पहली पंक्ति

ob_end_flush(); 

को

ob_start(); 

जोड़ा कक्षा। समस्या ऊपर बताई गई है, शीर्ष वोट वाले उत्तर में - स्क्रिप्ट फ़ाइल को यूओटीएफ 8 के रूप में सहेजा गया है-बीओएम के साथ।

के रूप में मुझे कोई कोई मौका नहीं मैक OSX पर ++ नोटपैड हो रही थी,

हर उत्पादन मैं इस utf8_decode()

बीओएम MS-खिड़कियों के लिए है की तरह तैयार किया।

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