Poškozené kódování češtiny

Databáze MySQL založená na verzi 4.1 a vyšší poskytuje možnost definovat znakovou sadu tabulky a její třídění a dokonce i znakovou sadu pro třídění jednotlivých polí. Proto je potřeba po otevření databázového spojení serveru "oznámit", v jakém kódování bude komunikace probíhat. Popsané řešení využijte také v případě, že se Vámi uložená data na výstupu skriptu zobrazují s poškozenou diakritikou.

Chování serveru nastavíte pomocí SQL dotazu SET a příkazu mysql_query(). Tento příkaz vložte nejlépe do skriptu, kde se aplikace připojuje do databáze - v příkladu se připojení provádí PHP příkazem mysql_connect():

 
$spojeni = mysqli_connect("server", "login", "heslo", "databaze");
mysqli_query($spojeni, "SET character_set_client=latin2");
mysqli_query($spojeni, "SET character_set_connection=latin2");
mysqli_query($spojeni, "SET character_set_results=latin2");
Kódování latin2 nahraďte Vámi požadovanou znakovou sadou (cp1250, utf8, latin1, ...). Více informací najdete v manuálu pro danou verzi MySQL na http://www.mysql.com/.

Pro nastavení všech parametrů najednou můžete použít tento jediný příkaz:
 
 mysqli_query($spojeni, "SET NAMES latin2");

Pozor! PHP od verze 5.6 má standardně nastaveno default_charset=UTF-8 a toto kódování posílá v hlavičce. Nastavení v "meta charset" pak má nižší prioritu. Problém lze vyřešit výběrem starší verze PHP nebo změnou default_charset v PHP.