Jadi ternyata ini sudah beberapa kali dijawab, cuma saya belum cukup Google-fu yang pas untuk mencari pertanyaan yang ada.
- Python, konversi char 4-byte untuk menghindari kesalahan MySQL "Nilai string salah:"
- Peringatan muncul dengan menyisipkan Unicode 4-byte ke mysql
Terima kasih kepada Martijn Pieters , solusinya datang dari dunia ekspresi reguler, khususnya kode ini (berdasarkan jawabannya pada tautan pertama di atas):
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)
Karakter yang saya ganti adalah WHITE MEDIUM SMALL SQUARE (U+25FD)
, FYI, tapi bisa apa saja.
Bagi mereka yang tidak terbiasa dengan UCS, seperti saya, ini adalah sistem untuk konversi Unicode dan pembangunan Python yang diberikan akan menyertakan dukungan untuk varian UCS-2 atau UCS-4, yang masing-masing memiliki batas atas yang berbeda pada dukungan karakter.
Dengan penambahan kode ini, string tampaknya bertahan di MySQL 5.1 dengan baik.
Semoga ini bisa membantu orang lain dalam situasi yang sama!