Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

संग्रहीत डेटा के अजीब वर्ण एन्कोडिंग, पुरानी लिपि उन्हें ठीक दिखा रही है नया नहीं है

संक्षेप में, क्योंकि इस पर पहले एक हजार बार चर्चा की जा चुकी है:

  1. PHP में एक स्ट्रिंग होती है, जैसे "漢字" , UTF-8 में एन्कोड किया गया। इसके लिए बाइट्स हैं E6 BC A2 E5 AD 97
  2. यह इस स्ट्रिंग को डेटाबेस कनेक्शन पर भेजता है जो latin1 पर सेट है
  3. डेटाबेस बाइट प्राप्त करता है E6 BC A2 E5 AD 97 , यह सोचना कि वे latin1 . का प्रतिनिधित्व करते हैं वर्ण।
  4. डेटाबेस वर्णों को संग्रहीत करता है æ¼¢å­ (वे अक्षर जो E6 BC A2 E5 AD 97 latin1 . में मैप करें )।
  5. उसी प्रक्रिया को उलटने से PHP को वही बाइट प्राप्त होती है, जिसे वह तब UTF-8 के रूप में मानता है। राउंडट्रिप PHP के लिए ठीक काम करता है, भले ही डेटाबेस वर्णों के साथ वैसा व्यवहार न करे जैसा उसे करना चाहिए।

तो यहां समस्या यह थी कि डेटाबेस में डेटा दर्ज करते समय डेटाबेस कनेक्शन गलत तरीके से सेट किया गया था। आपको डेटाबेस में डेटा को सही वर्णों में बदलना होगा। इसे आजमाएं:

SELECT CONVERT(BINARY CONVERT(field_name USING latin1) USING utf8) FROM table_name

शायद utf8 वह नहीं है जो आपको यहां चाहिए, प्रयोग करें। अगर यह काम करता है, तो इसे UPDATE में बदलें डेटा को स्थायी रूप से अपडेट करने के लिए स्टेटमेंट।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySql में संयोजन त्रुटि का अवैध मिश्रण

  2. उन पंक्तियों को कैसे वापस करें जिनमें MySQL में समान कॉलम मान हैं

  3. MySQL में सबस्ट्रिंग () का उपयोग कैसे करें

  4. SQL सर्वर डेटाबेस को MySQL में कैसे निर्यात करें?

  5. MySQL - फिक्स - त्रुटि - आपका पासवर्ड वर्तमान नीति आवश्यकताओं को पूरा नहीं करता है