यह एक चारसेट इश्यू है। जैसे, यह कई अलग-अलग स्तरों पर गलत हो सकता है, लेकिन सबसे अधिक संभावना है, आपके डेटाबेस में तार utf-8 एन्कोडेड हैं, और आप उन्हें iso-8859-1 के रूप में प्रस्तुत कर रहे हैं। या फिर इसके विपरीत।
इस समस्या को ठीक करने का उचित तरीका है, अपने चरित्र-सेट को सीधे प्राप्त करना। सरलतम रणनीति, चूंकि आप PHP का उपयोग कर रहे हैं, अपने पूरे आवेदन में iso-8859-1 का उपयोग करना है। ऐसा करने के लिए, आपको यह सुनिश्चित करना होगा कि:
- सभी PHP स्रोत-फ़ाइलों को iso-8859-1 (cp-1252 के साथ भ्रमित नहीं होना) के रूप में सहेजा जाता है।
- आपका वेब-सर्वर फ़ाइलों के साथ सेवा करने के लिए कॉन्फ़िगर किया गया है
charset=iso-8859-1
- वैकल्पिक रूप से, आप उपयोग करते हुए PHP- दस्तावेज़ के भीतर से वेबसर्वर सेटिंग्स को ओवरराइड कर सकते हैं
header
।
- इसके अलावा, आप HTML में एक मेटा-टैग सम्मिलित कर सकते हैं , जो एक ही बात को निर्दिष्ट करता है, लेकिन इसकी सख्त आवश्यकता नहीं है।
- आप कर सकते हैं यह भी निर्दिष्ट कर
accept-charset
अपने पर विशेषता <form>
तत्वों।
- डेटाबेस तालिकाओं को लैटिन 1 के रूप में एन्कोडिंग के साथ परिभाषित किया गया है
- PHP से डेटाबेस के बीच का डेटाबेस कनेक्शन latin1 पर सेट है
यदि आपके डेटाबेस में पहले से ही डेटा है, तो आपको पता होना चाहिए कि वे संभवतः पहले से ही गड़बड़ हैं। यदि आप पहले से ही उत्पादन के चरण में नहीं हैं, तो बस इसे मिटा दें और शुरू करें। अन्यथा आपको कुछ डेटा क्लीनअप करना होगा।
मेटा-टैग पर एक नोट, क्योंकि हर कोई गलतफहमी है कि वे क्या हैं:
जब एक वेब-सर्वर एक फ़ाइल (ए-एचटीएमएल-दस्तावेज़) परोसता है, तो यह कुछ जानकारी भेजता है, जो सीधे ब्राउज़र में प्रस्तुत नहीं की जाती है। इसे HTTP-हेडर्स के रूप में जाना जाता है। ऐसा ही एक हेडर है, Content-Type
हेडर, जो फ़ाइल के mimetype (जैसे text/html
) को निर्दिष्ट करता है और साथ ही एन्कोडिंग (उर्फसेट) को भी निर्दिष्ट करता है । जबकि अधिकांश वेबसर्वर जानकारी के Content-Type
साथ एक हेडर भेजेंगे charset
, यह वैकल्पिक है। यदि यह मौजूद नहीं है, तो ब्राउज़र इसके बजाय किसी मेटा-टैग की व्याख्या करेगा http-equiv="Content-Type"
। यह महसूस करना महत्वपूर्ण है कि मेटा-टैग की केवल व्याख्या की जाती है यदि वेबसर्वर हेडर नहीं भेजता है। व्यवहार में इसका मतलब है कि इसका उपयोग केवल तभी किया जाता है जब पृष्ठ को डिस्क पर सहेजा जाता है और फिर वहां से खोला जाता है।
इस पृष्ठ में इन बातों की बहुत अच्छी व्याख्या है।