Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да филтрирам (или заменя) unicode символи, които биха заели повече от 3 байта в UTF-8?

Unicode символите в диапазоните \u0000-\uD7FF и \uE000-\uFFFF ще имат 3 байта (или по-малко) кодиране в UTF8. Диапазонът \uD800-\uDFFF е за многобайтов UTF16. Не знам Python, но трябва да можете да настроите регулярен израз, който да съвпада извън тези диапазони.

pattern = re.compile("[\uD800-\uDFFF].", re.UNICODE)
pattern = re.compile("[^\u0000-\uFFFF]", re.UNICODE)

Редактирайте добавянето на Python от скрипта на Denilson Sá в тялото на въпроса:

re_pattern = re.compile(u'[^\u0000-\uD7FF\uE000-\uFFFF]', re.UNICODE)
filtered_string = re_pattern.sub(u'\uFFFD', unicode_string)    


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съхранявате процентна стойност?

  2. Отказ и отказ на Amazon RDS

  3. Как да вмъкнете DECIMAL в MySQL база данни

  4. Enity Framework с MySQL

  5. Как да разбера стандартния сървърен набор от символи в mysql?