मुद्दे पर दो अलग-अलग वर्ण सेट हैं:
- वह एन्कोडिंग जिसमें MySQL स्ट्रिंग मानता है, क्लाइंट द्वारा भेजी जाती है (
character_set_client
); और - वह एन्कोडिंग जिसमें MySQL अपनी प्रतिक्रियाएँ भेजेगा (
character_set_results
)।
पीडीओ का उपयोग करके इन चरों के वर्तमान मूल्य का पता लगाने के लिए, आप प्रासंगिक SHOW VARIABLES
बयान; उदाहरण के लिए:
$qry = $db->query("SHOW VARIABLES LIKE 'character_set_client'");
mysql_client_encoding()
के लिए दस्तावेज़ीकरण
कुछ अस्पष्ट है, जैसा कि यह बताता है:
हालांकि, ऐसा कोई सर्वर सिस्टम वैरिएबल मौजूद नहीं है:इसलिए मुझे यकीन नहीं है कि यह कौन सा वापस आएगा।
अंत में, MYSQL_ATTR_INIT_COMMAND
. सेट करने के बजाय , आप डीएसएन में अपना वांछित वर्ण सेट निर्दिष्ट कर सकते हैं (जैसा कि बताया गया है in मैनुअल
):
$db = new PDO("mysql:dbname=$db;host=$host;charset=$charset", $user, $password);