Конвертиране на база данни MySQL от cp1251 към UTF-8 (преподаватели по испански език)

Въпреки факта, че сега почти навсякъде се използва UTF-8, дори и да се случи понякога забавна случаи с кодировки.

Наскоро се сблъскват с проблема за този вид. сървъра на базата данни се изпълнява на cp1251. Encoding базата данни и всички нейни маси - UTF-8. На уеб сървър с приложение в PHP, което е самата работи с информацията в базата данни също е в UTF-8. Проблемът е, че околната среда променливи уеб сървър, също се изправи кодиране cp1251. сървъра на базата данни да комуникира с клиент на базата данни, мисля, че и двете от тях работят с информация, кодирана в cp1251, въпреки че в действителност информацията е в UTF-8. Съответно, няма проблеми са били наблюдавани, докато сървърът на базата данни не е свързан клиент, който иска да общуват в кодировка, различна от cp1251. Клиентът получи нещо, но не и текста в исканата кодиране.

За да се справи със ситуацията, в уеб приложението трябваше веднага след свързването към базата данни, за да определите желаната кодиране заявка "SET набор от символи" UTF8 ". Остава да се кодира данни.

Първо премахнете сметището от базата данни, с искане на данни, кодирани в cp1251. В действителност, те ще се слеят в кодирането, че е бил използван от уеб приложение. В този случай, това е UTF-8.

Създаване на MySQL база данни сметището в cp1251 команди:


От сметище едновременно премахва всички линии, започващи с героите "/ *" - директива определяне на настройките за кодиране за внос-износ.

Сега стартирайте конзола клиента, и да се създаде база данни празно в UTF-8:


Остава да изберете кодирането, по който информацията се съхранява в сметището и да попълните предварително записан сметище в новата база данни. В нашия случай, това отново е UTF-8.


Сега можете да избирате на клиента, че кодиране, който се намира в терминала, както и да видите текста. В моя случай, кодираща KOI8-R е определен в терминала:


Ако всичко е направено правилно, можете да повторите възстановяването на сметището е основната база и премахване на примерна база данни:

Тези, които нямат достъп до конзолата (черупка, SSH), можете да използвате PHP разтвор: