Čeština v MySQL a přechod na nový webhosting

Chcete změnit poskytovatele webhostingu nebo převést stránky na nový server ? Teoreticky je to jednoduché, zkopírujete všechny soubory přes FTP, vyexportujete databázi v phpMyAdmin a naimportujete soubor na novém serveru.

Ale pokud máte ještě starou MySQL databází v kódování latin2 a na novém serveru máte databázi v UTF-8, nastane problém s kódováním češtiny. V lepším případě budete mít místo znaků „š“ a „ž“ otazníky, v horším případě to bude „rozsypaný čaj“.

A řešení ? V podstatě je jednoduché.

Změním výchozí znakovou sadu a porovnání databáze na stejné hodnoty jako má původní databáze. To zjistím příkazem SHOW VARIABLES LIKE „character_set_database“ a show variables like „collation_database“

např.: ALTER DATABASE `xxxxxx` DEFAULT CHARACTER SET latin2 COLLATE latin2_general_ci

Ale pozor, databáze musí být před provedením změny znakové sady prázdná.

  • Vyexportuji přes phpMyAdmin všechny tabulky v UTF-8 do souboru import.sql
  • Uploadnu soubor import.sql na server
  • Změním v souboru všechny výskyty znakové sady latin2 v příkazu create table
    na linuxu: sed „s/CHARSET=latin2/CHARSET=utf8/g“ import.sql > import2.sql
  • Naimportuji soubor import2.sql přes příkaz mysql …, přihlásím se k MySQL serveru, přepnu na databází „use [databáze]“,nastavím znakovou sadu připojení k MySQL na UTF=8 „set names utf8;“ a provedu soubor (source import2.sql)