आपकी समस्या आपके चारसेट-एन्कोडिंग से संबंधित है। यह महत्वपूर्ण है कि आपका संपूर्ण उन मुद्दों से बचने के लिए कोड में एक ही वर्णसेट है जहां वर्ण गलत तरीके से प्रदर्शित होते हैं।
ऐसी कुछ सेटिंग्स हैं जिन्हें ठीक से परिभाषित करने की आवश्यकता है और मैं दृढ़ता से यूटीएफ -8 की अनुशंसा करता हूं, क्योंकि इसमें आपको अधिकतर अक्षरों की आवश्यकता होगी (स्कैंडिनेवियाई, ग्रीक, अरबी, रूसी, आदि)।
यहां उन चीजों की एक छोटी सूची दी गई है जिन्हें एक विशिष्ट वर्णसेट पर सेट करना है।
शीर्षक
-
HTML और PHP दोनों हेडर में वर्णसेट को UTF-8 में सेट करना
-
पीएचपी:
header('Content-Type: text/html; charset=utf-8');
(PHP शीर्षलेख किसी भी . से पहले रखना होगा आउटपुट (इको, व्हाइटस्पेस, एचटीएमएल)!)
-
एचटीएमएल:
<meta charset=utf-8" />
(एचटीएमएल-हेडर
<head>
. के अंदर रखे जाते हैं /</head>
टैग)
-
कनेक्शन
-
आपको वर्णसेट को कनेक्शन में ही . में निर्दिष्ट करना होगा . आपके पीडीओ उदाहरण के लिए, यह इस तरह किया गया है
$handler = new PDO('mysql:host=localhost;dbname=database;charset=utf8', 'username', 'password', array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET CHARACTER SET UTF8"));
नोट करें
charset=utf8
-गुण। अन्य MySQL-API के पास ऐसा करने के अलग-अलग तरीके हैं, क्या आपको भविष्य में कुछ और उपयोग करना चाहिए।
डेटाबेस
-
आपका डेटाबेस और इसके टेबल को UTF-8 पर सेट करना होगा। ध्यान दें कि वर्णसेट नहीं है संयोजन के समान। मैं देख रहा हूँ कि आप पहले से ही अपने संयोजन को UTF-8 पर सेट कर चुके हैं, इसलिए यह अच्छा है, लेकिन पूरे डेटाबेस और सभी तालिकाओं के लिए ऐसा ही करें।
आप प्रत्येक डेटाबेस और तालिकाओं के लिए नीचे दिए गए प्रश्नों को एक बार चलाकर ऐसा कर सकते हैं (उदाहरण के लिए phpMyAdmin में)
ALTER DATABASE databasename CHARACTER SET utf8 COLLATE utf8_unicode_ci; ALTER TABLE tablename CONVERT TO CHARACTER SET utf8 COLLATE utf8_unicode_ci;
ध्यान दें कि डेटाबेस में पहले से संग्रहीत कोई भी डेटा स्वचालित रूप से उनके टूटे हुए चारसेट को ठीक नहीं करेगा। तो यह महत्वपूर्ण है कि आप डेटा डालने से पहले ऐसा करें, या आप इसे चारसेट सेट करने के बाद फिर से डालें।
php.ini विनिर्देश
-
आपके
php.ini
. में फ़ाइल, आपको अपने प्लेटफ़ॉर्म के लिए इस तरह डिफ़ॉल्ट वर्णसेट निर्दिष्ट करना चाहिएdefault_charset = "utf-8";
फ़ाइल-एन्कोडिंग
- यह भी महत्वपूर्ण है कि
.php
फ़ाइल स्वयं UTF-8 एन्कोडेड है। यदि आप अपना कोड लिखने के लिए नोटपैड++ का उपयोग कर रहे हैं, तो यह टास्कबार पर "प्रारूप" ड्रॉप-डाउन में किया जा सकता है।
इमोजी
- MySQL में (तालिका, डेटाबेस और कनेक्शन-ऑब्जेक्ट दोनों में), आपको
utf8mb4
निर्दिष्ट करना होगा वर्णसेट, नियमितutf8
. के विपरीत , अगर आप इमोजी के साथ काम करना चाहते हैं।
मुझे जावा के बारे में ज्यादा जानकारी नहीं है, लेकिन अगर आप यूटीएफ -8 में भी विशेषताएँ सेट कर सकते हैं, तो इसे करें। संक्षेप में, जो कुछ भी एक विशिष्ट वर्णसेट पर सेट किया जा सकता है उसे उसी पर सेट किया जाना चाहिए।
यदि आप ऊपर दिए गए सभी बिंदुओं का पालन करते हैं, तो संभावना है कि आपकी समस्या का समाधान हो जाएगा। यदि नहीं, तो आप इस StackOverflow पोस्ट पर एक नज़र डाल सकते हैं: UTF-8 पूरी तरह से .