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

mysql में 4-बाइट यूनिकोड डालने से चेतावनी दी गई है

यदि MySQL 4 बाइट्स या अधिक के UTF-8 कोड को हैंडल नहीं कर सकता है, तो आपको कोडपॉइंट \U00010000 पर सभी यूनिकोड वर्णों को फ़िल्टर करना होगा।; UTF-8 उस सीमा से नीचे के कोडपॉइंट को 3 बाइट्स या उससे कम में एन्कोड करता है।

आप उसके लिए रेगुलर एक्सप्रेशन का उपयोग कर सकते हैं:

>>> import re
>>> highpoints = re.compile(u'[\U00010000-\U0010ffff]')
>>> example = u'Some example text with a sleepy face: \U0001f62a'
>>> highpoints.sub(u'', example)
u'Some example text with a sleepy face: '

वैकल्पिक रूप से, आप .translate() का उपयोग कर सकते हैं समारोह मैपिंग टेबल के साथ जिसमें केवल None हो मान:

>>> nohigh = { i: None for i in xrange(0x10000, 0x110000) }
>>> example.translate(nohigh)
u'Some example text with a sleepy face: '

हालाँकि, अनुवाद तालिका बनाने से बहुत सारी मेमोरी खत्म हो जाएगी और उत्पन्न होने में कुछ समय लगेगा; यह शायद आपके प्रयास के लायक नहीं है क्योंकि नियमित अभिव्यक्ति दृष्टिकोण अधिक कुशल है।

यह सब माना जाता है कि आप यूसीएस -4 संकलित पायथन का उपयोग कर रहे हैं। यदि आपका अजगर UCS-2 समर्थन के साथ संकलित किया गया था तो आप केवल '\U0000ffff' तक के कोडपॉइंट का उपयोग कर सकते हैं रेगुलर एक्सप्रेशन में और आप पहली बार में कभी भी इस समस्या का सामना नहीं करेंगे।

मैं ध्यान देता हूं कि MySQL 5.5.3 के रूप में नए जोड़े गए utf8mb4 कोडेक पूर्ण यूनिकोड श्रेणी का समर्थन करता है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP- तैयार बयानों का उपयोग करके mysql में बाइनरी डेटा डालना

  2. उपयोगकर्ता नाम द्वारा Laravel में उपयोगकर्ता खोजें

  3. पीडीओ यूटीएफ -8 एन्कोडिंग मुद्दा?

  4. MySQL में एक संचयी योग कॉलम बनाएं

  5. कॉलम सूची से मेल खाने वाला FULLTEXT इंडेक्स नहीं मिल रहा है (इंडेक्स सेट है)