क्या आप वाकई अभी भी PHP>=संस्करण 3.6 और <5.3.6 का उपयोग कर रहे हैं?
मान लें कि आपके पास 5.3.6 या बाद का संस्करण है...
चरित्र सेट और PDO_MYSQL DSN कहें कि आपको उपयोग करना चाहिए
$pdo = new PDO("mysql:host=localhost;dbname=mydb;charset=utf8",
'my_user', 'my_pass');
और इसका अर्थ है (स्पष्ट रूप से पर्याप्त नहीं) कि utf8
utf8mb4
. द्वारा प्रतिस्थापित किया जाना चाहिए यदि उपयुक्त हो।
PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES utf8'
उतना अच्छा नहीं है, लेकिन 5.3.6 से पहले का विकल्प था।
मुझे लगता है कि "खतरनाक" बहुत मजबूत शब्द है, यहां तक कि पूर्व-5.3.6 भी।
एक संबंधित तकनीक:init_command = SET NAMES ...
. का उपयोग करना my.cnf
. में खराब है क्योंकि init_command
root
. के रूप में कनेक्ट होने पर निष्पादित नहीं किया जाता है ।
utf8mb4
पसंदीदा है CHARACTER SET
UTF-8 के लिए क्योंकि इसमें इमोजी और कुछ चीनी अक्षर शामिल हैं जो utf8
. से गायब थे . वह वर्णमाला MySQL संस्करण 5.5.3 से शुरू होकर उपलब्ध है।