मेरा अनुमान है कि आप टेबल को utf8mb4
. पर सेट कर रहे हैं , लेकिन आपका कनेक्शन एन्कोडिंग utf8
. पर सेट है . आपको इसे utf8mb4
. पर सेट करना होगा साथ ही, अन्यथा MySQL संग्रहित utf8mb4
. को रूपांतरित कर देगा utf8
. को डेटा , जिनमें से बाद वाला "उच्च" यूनिकोड वर्णों को एन्कोड नहीं कर सकता है। (हां, यह एक MySQL idiosyncrasy है।)
कच्चे MySQL कनेक्शन पर, इसे इस तरह दिखना होगा:
SET NAMES 'utf8mb4';
SELECT * FROM `my_table`;
PHP (mysql, mysqli या PDO) से आप MySQL से कैसे जुड़ते हैं, इसके आधार पर आपको इसे क्लाइंट के सर्वोत्तम तरीके से अनुकूलित करना होगा।
वास्तव में स्पष्ट करने के लिए (हाँ, mysql_
. का उपयोग करके सरलता के लिए एक्सटेंशन, घर पर ऐसा न करें):
mysql_connect(...);
mysql_select_db(...);
mysql_set_charset('utf8mb4'); // adapt to your mysql connector of choice
$r = mysql_query('SELECT * FROM `my_table`');
var_dump(mysql_fetch_assoc($r)); // data will be UTF8 encoded