तो यह पता चला है कि इसका उत्तर कई बार दिया गया है, मुझे मौजूदा प्रश्नों को खोजने के लिए बिल्कुल सही Google-fu नहीं मिला है।
- पायथन, MySQL त्रुटि से बचने के लिए 4-बाइट चार को कनवर्ट करें"गलत स्ट्रिंग मान:"
- सम्मिलित करके चेतावनी दी गई 4-बाइट यूनिकोड से mysql
Martijn Pieters को धन्यवाद , समाधान नियमित अभिव्यक्तियों की दुनिया से आया है, विशेष रूप से यह कोड (उपरोक्त पहले लिंक पर उनके उत्तर के आधार पर):
import re
try:
# UCS-4
highpoints = re.compile(u'[\U00010000-\U0010ffff]')
except re.error:
# UCS-2
highpoints = re.compile(u'[\uD800-\uDBFF][\uDC00-\uDFFF]')
# mytext = u'<some string containing 4-byte chars>'
mytext = highpoints.sub(u'\u25FD', mytext)
मैं जिस वर्ण को बदल रहा हूं वह है WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI करें, लेकिन कुछ भी हो सकता है।
यूसीएस से अपरिचित लोगों के लिए, मेरे जैसे, यह यूनिकोड रूपांतरण के लिए एक प्रणाली है और पायथन के दिए गए निर्माण में यूसीएस -2 या यूसीएस -4 संस्करण के लिए समर्थन शामिल होगा, जिनमें से प्रत्येक में चरित्र समर्थन पर एक अलग ऊपरी सीमा है।पी>
इस कोड को जोड़ने के साथ, स्ट्रिंग्स MySQL 5.1 में ठीक-ठाक बनी रहती हैं।
आशा है कि यह उसी स्थिति में किसी और की मदद करेगा!