मेरे पास एक Django ऐप है जो ट्विटर के एपीआई से ट्वीट डेटा लेता है और इसे एक MySQL डेटाबेस में सहेजता है। जहां तक मुझे पता है (मैं अभी भी चरित्र एन्कोडिंग के बेहतर बिंदुओं के आसपास अपना सिर प्राप्त कर रहा हूं) मैं हर जगह यूटीएफ -8 का उपयोग कर रहा हूं, जिसमें माईएसक्यूएल एन्कोडिंग और टकराव भी शामिल है, जो एक ट्वीट में इमोजी वर्ण शामिल हैं, ठीक है, मैं समझता हूं कि चार-बाइट एन्कोडिंग का उपयोग करें। उन्हें बचाने के लिए कोशिश कर रहा है Django से निम्न चेतावनी का उत्पादन:मैं अपने इनपुट से इमोजी वर्णों को कैसे फ़िल्टर कर सकता हूं ताकि मैं MySQL <5.5 में सहेज सकूं?
/home/biggleszx/.virtualenvs/myvirtualenv/lib/python2.6/site-packages/django/db/backends/mysql/base.py:86 : चेतावनी: गलत स्ट्रिंग मान: '\ xF0 \ x9F \ X98 \ xAD मैं ...' कॉलम 'पाठ' के लिए पंक्ति 1 वापसी self.cursor.execute (क्वेरी, args)
मैं पर MySQL 5.1 का उपयोग करके, utf8mb4 का उपयोग तब तक एक विकल्प नहीं है जब तक कि मैं 5.5 तक अपग्रेड नहीं करता, जो कि मैं अभी तक नहीं चाहता हूं (जो मैंने पढ़ा है उससे भी, इसके लिए Django का समर्थन काफी उत्पादन-तैयार नहीं है, हालांकि यह हो सकता है अब सटीक नहीं होगा)। मैंने folks को भी प्रभावित कॉलम पर टेक्स्ट के बजाय बीएलओबी के उपयोग की सलाह दी है, जो मैं भी नहीं करता क्योंकि मुझे लगता है कि यह प्रदर्शन को नुकसान पहुंचाएगा।
मेरा सवाल यह है कि, मुझे लगता है कि मुझे ट्वीट सामग्री के लगभग 100% संरक्षण पर भी परेशान नहीं है, क्या मैं एक तरीका है कि मैं सभी इमोजी पात्रों को फ़िल्टर कर सकता हूं और उन्हें एक गैर-मल्टीबाइट चरित्र के साथ बदल सकता हूं, जैसे कि आदरणीय WHITE MEDIUM SMALL SQUARE (U+25FD)
? मुझे लगता है कि यह मेरा वर्तमान सेटअप दिया गया डेटा सहेजने का सबसे आसान तरीका है, हालांकि अगर मुझे एक और स्पष्ट समाधान याद आ रहा है, तो मुझे यह सुनना अच्छा लगेगा!
एफवाईआई, मैं उबंटू 10.04.4 एलटीएस पर स्टॉक पायथन 2.6.5 का उपयोग कर रहा हूं। sys.maxunicode
1114111 है, इसलिए यह एक यूसीएस -4 बिल्ड है।
पढ़ने के लिए धन्यवाद।
UTF8 गैर सांकेतिक शब्दों में बदलना कर सकते हैं बीएमपी पात्र – SLaks
@ स्लक्स: हाँ, लेकिन 'utf8' MySQL charset उन्हें स्टोर नहीं कर सकता क्योंकि यह केवल 3 बाइट्स का उपयोग करता है। –