sql >> Database teknologi >  >> RDS >> Mysql

Hvordan filtrerer (eller erstatter) unicode-tegn, der ville tage mere end 3 bytes i UTF-8?

Unicode-tegn i intervallerne \u0000-\uD7FF og \uE000-\uFFFF vil have 3 byte (eller færre) kodninger i UTF8. \uD800-\uDFFF-intervallet er for multibyte UTF16. Jeg kender ikke python, men du burde være i stand til at opsætte et regulært udtryk, så det matcher uden for disse områder.

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

Rediger tilføjelse af Python fra Denilson Sás script i spørgsmålsteksten:

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


  1. MySQL fejl 1022 ved oprettelse af tabel

  2. Få LÆNGDEN af en LANG RAW

  3. Sådan ekko ud tabelrækker fra db (php)

  4. Hvordan fjerner man tidsdelen af ​​en datetime-værdi (SQL-server)?