यहां बहुत सी चीजें गलत हो सकती हैं, क्योंकि डेटाबेस, फॉर्म सबमिट और स्रोत कोड स्ट्रिंग अक्षर सभी शामिल हैं। मुझे लगता है कि आप यूटीएफ -8 का उपयोग करना चाहते हैं, क्योंकि किसी भी अन्य सामान्य एन्कोडिंग (सीपी 1252, लैटिन 1) के साथ जब आप json_
का उपयोग करना चाहते हैं तो आपको खराब कर दिया जाएगा या ~200 से अधिक विभिन्न वर्णों को स्वीकार करें।
करने वाली पहली चीज़ है निकालें किसी भी प्रकार का रूपांतरण आदि कोड जो एन्कोडिंग मुद्दों को ठीक करने की कोशिश करने के इरादे से लिखा गया था। जैसे utf8_encode
, htmlentitites
, *_replace
.. जो भी हो।
स्रोत एन्कोडिंग।
$str = "· Close up the server";
उपरोक्त लिखते समय, PHP स्रोत फ़ाइल को यूटीएफ -8 में भौतिक रूप से एन्कोड किया जाना चाहिए। यदि आप विंडोज़ पर हैं, तो आपको इसे स्पष्ट रूप से करना या कॉन्फ़िगर करना होगा। UTF-8 विंडोज़ पर जादुई रूप से नहीं होता है।
फ़ॉर्म सबमिट करता है
जब उपयोगकर्ता एक फॉर्म जमा करता है, तो पेलोड उस एन्कोडिंग में होगा जो आपने पृष्ठ को घोषित किया था। आप इसे इस तरह घोषित कर सकते हैं:
header("Content-Type: text/html; charset=utf-8");
लेकिन कोई भी वास्तव में आपके सर्वर पर मनमानी बाइट जमा कर सकता है, इसलिए आगे बढ़ने से पहले आपको इनपुट को यूटीएफ -8 में सत्यापित करना चाहिए। mb_check_encoding
अच्छा है।
डेटाबेस
चूंकि इस समय आपका डेटा UTF-8 के रूप में आ रहा है, आपके इनपुट स्ट्रिंग्स UTF-8 में हैं। कनेक्शन एन्कोडिंग निर्दिष्ट करके, आपको डेटाबेस से कनेक्ट होने के बाद इसे निर्दिष्ट करना होगा।
mysql_set_charset("utf8"); //After making the connection, and before any queries
//or $mysqli->set_charset( "utf8");
यह डेटाबेस को यूटीएफ -8 में आपके इनपुट को पढ़ता है, और यूटीएफ -8 में इसके आउटपुट को एन्कोड करता है। आप अपने कॉलम/टेबल/डेटाबेस को UTF-8 पर भी सेट करना चाहेंगे।
यूनिकोड एस्केप सीक्वेंस \uxxxx
या \uhhhh\ullll
या \Uxxxxxxxx
PHP में समर्थित नहीं हैं।