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

लैटिन1 एन्कोडेड कॉलम में UTF-8 वर्णों का पता कैसे लगाएं - MySQL

वर्ण एन्कोडिंग, समय क्षेत्र की तरह, समस्याओं का एक निरंतर स्रोत है।

आप क्या कर सकते हैं किसी भी "उच्च-ASCII" वर्णों की तलाश करें क्योंकि ये या तो LATIN1 उच्चारण वर्ण या प्रतीक हैं, या UTF-8 बहु-बाइट वर्ण के पहले हैं। अंतर बताना तब तक आसान नहीं होगा जब तक आप थोड़ा सा भी धोखा नहीं देते।

यह पता लगाने के लिए कि कौन सी एन्कोडिंग सही है, आप बस SELECT दो अलग-अलग संस्करण और नेत्रहीन तुलना करें। यहां एक उदाहरण दिया गया है:

SELECT CONVERT(CONVERT(name USING BINARY) USING latin1) AS latin1, 
       CONVERT(CONVERT(name USING BINARY) USING utf8) AS utf8 
FROM users 
WHERE CONVERT(name USING BINARY) RLIKE CONCAT('[', UNHEX('80'), '-', UNHEX('FF'), ']')

इसे असामान्य रूप से जटिल बना दिया गया है क्योंकि ऐसा लगता है कि MySQL regexp इंजन \x80 . जैसी चीज़ों को नज़रअंदाज़ कर देता है और UNHEX() . का उपयोग करना आवश्यक बनाता है इसके बजाय विधि।

यह इस तरह के परिणाम उत्पन्न करता है:

latin1                utf8
----------------------------------------
Björn                Björn


  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. mysql में सभी प्रश्नों को लॉग करें

  5. उबंटू पर MySQL कैसे स्थापित करें