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

UTF-8 низове в MySQL база данни се объркаха след промяна на конфигурацията

C3 83 C6 92 C3 82 C2 AA
C3 3F C2 AA

Това е, което получавате, ако третирате последователността от байтове като UTF-8, след което я кодирате като ISO-8859-1. 3F е ? , който е включен като заместващ знак, тъй като UTF-8 C6 92 е U+0192 ƒ което не съществува в ISO-8859-1. Но той съществува в кодовата страница на Windows 1252 Western European, кодиране, много подобно на ISO-8859-1; там е байт 0x83.

C3 83 C2 AA

Преминете през друг кръг от третиране като-UTF-8-байта и-кодиране към-cp1252 и ще получите:

C3 AA

което накрая е UTF-8 за ê .

Имайте предвид, че дори ако обслужвате не-XML HTML страница изрично като ISO-8859-1, браузърите всъщност ще използват кодирането cp1252 поради неприятни исторически причини.

За съжаление MySQL няма cp1252 кодиране; latin1 е (правилно) ISO-8859-1. Така че няма да можете да коригирате данните, като изхвърлите като latin1 и след това презаредите като utf8 (два пъти). Ще трябва да обработите скрипта с текстов редактор, който може да записва като едно от двете (или например в Python file(path, 'rb').read().decode('utf-8').encode('cp1252').decode('utf-8').encode('cp1252') ).



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. След актуализация на Windows 10 1803 моята програма не може да отвори сокет, когато се изпълнява от мрежов споделен достъп

  2. Грешка с mysql процедури ГРЕШКА 1304 И ГРЕШКА 1305

  3. Mysql, изберете идентификатори, групирани по отделна колона (изберете всички идентификатори за всеки уникален домейн)

  4. изтегляне на стойности на sql таблица за повторна употреба офлайн

  5. Влезте с LDAP, като използвате JSF 2,1 и Apache Tomcat