Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Peringatan dimunculkan dengan memasukkan unicode 4-byte ke mysql

Jika MySQL tidak dapat menangani kode UTF-8 sebesar 4 byte atau lebih maka Anda harus memfilter semua karakter unicode melalui codepoint \U00010000; UTF-8 mengkodekan titik kode di bawah ambang batas tersebut dalam 3 byte atau kurang.

Anda dapat menggunakan ekspresi reguler untuk itu:

>>> 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: '

Atau, Anda dapat menggunakan .translate() fungsi dengan tabel pemetaan yang hanya berisi None nilai:

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

Namun, membuat tabel terjemahan akan memakan banyak memori dan membutuhkan waktu untuk membuatnya; mungkin tidak sepadan dengan usaha Anda karena pendekatan ekspresi reguler lebih efisien.

Ini semua menganggap Anda menggunakan python yang dikompilasi UCS-4. Jika python Anda dikompilasi dengan dukungan UCS-2 maka Anda hanya dapat menggunakan codepoint hingga '\U0000ffff' dalam ekspresi reguler dan Anda tidak akan pernah mengalami masalah ini sejak awal.

Saya perhatikan bahwa pada MySQL 5.5.3 yang baru ditambahkan utf8mb4 kodek tidak mendukung rentang Unicode penuh.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Penerapan Multi-Cloud untuk Replikasi MySQL

  2. Mysql - cara mengatur kenaikan otomatis untuk memulai dari nol

  3. Menemukan posisi angka dalam string

  4. Apakah InnoDB (MySQL 5.5.8) pilihan yang tepat untuk multi-miliar baris?

  5. Antarmuka basis data GUI MySQL