Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Cảnh báo được đưa ra bằng cách chèn mã unicode 4 byte vào mysql

Nếu MySQL không thể xử lý các mã UTF-8 từ 4 byte trở lên thì bạn sẽ phải lọc ra tất cả các ký tự unicode qua codepoint \U00010000; UTF-8 mã hóa điểm mã dưới ngưỡng đó trong 3 byte trở xuống.

Bạn có thể sử dụng một biểu thức chính quy cho điều đó:

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

Ngoài ra, bạn có thể sử dụng .translate() chức năng với một bảng ánh xạ chỉ chứa None giá trị:

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

Tuy nhiên, việc tạo bảng dịch sẽ tốn rất nhiều bộ nhớ và mất một khoảng thời gian để tạo; nó có thể không đáng để bạn nỗ lực vì phương pháp biểu thức chính quy hiệu quả hơn.

Tất cả điều này giả định rằng bạn đang sử dụng một python được biên dịch UCS-4. Nếu python của bạn được biên dịch với hỗ trợ UCS-2 thì bạn chỉ có thể sử dụng mã điểm tối đa '\U0000ffff' trong biểu thức chính quy và bạn sẽ không bao giờ gặp phải vấn đề này ngay từ đầu.

Tôi lưu ý rằng kể từ MySQL 5.5.3, utf8mb4 codec không hỗ trợ phạm vi Unicode đầy đủ.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Chèn dữ liệu vào bảng bằng php

  2. Tránh lỗi cột không rõ ràng khi sử dụng JOIN trong MySQL

  3. Sử dụng Cơ sở dữ liệu quan hệ MySQL trên Ubuntu 8.04 (Hardy)

  4. Truy xuất id được chèn cuối cùng cho nhiều hàng

  5. IllegalArgumentException:Loại không được để trống