MySQL databáza a diakritika
6 příspěvků
Archiv diskusního fóra
Fórum je uzavřené a slouží pouze ke čtení. Některé informace mohou být zastaralé.
-
Mám do MySQL databázy nahraný katalóg súčiastok, ktoré zobrazujem cez web rozhranie. Na stránkach sa zobrazujú jednak texty uložené v databáze ako aj texty uložené implicitne v php súboroch. PHP súbory boli editované textovým editorom a uložené v kódovaní utf8. Problém je, že pokiaľ nastavím vo web prehliadači kódovanie ako utf8, nezobrazí sa diakritika v textoch, ktoré pochádzajú z databázy. Texty z PHP súborov sú OK. Keď prepnem kódovanie na Stredoeurópske (ISO8859-2), texty z PHP súborov sú nezmyselné a texty z databázy sú OK. V phpAdmine mám nastavenú znakovú sadu v MySQL na utf8, jazyk a overenie MySQL spojenia sú utf8-slovak. Keď pozerám texty v databáze cez phpAdmin, zobrazenie diakritiky je OK. Nerozumiem prečo je tomu na stránke inak. Za odpoveď vopred ďakujem Mi.Ko.
-
SET NAMES utf8;
-
No nezabralo to, ale zaujalo ma, že url v mojom phpAdmine vyzerá nasledovne: https://www.webzdarma.cz/mysql/index.php?lang=sk-utf-8&server=1&convcharset=iso-8859-2&collation_connection=utf8_slovak_ci, ale zaujala ma tam tá premenná convcharset, ktorá je nastavená na iso-8859-2 pokiaľ lang a collation_connection sú správne.
-
Texty do databáze musíš uložit znovu ve správném kódování.
-
Ono je to asi 20000 údajov. Importujem ich z .sql súborov. Tabuľka je jednoznačne vytvorená v kódovaní utf8. CREATE TABLE `product` ( `idproduct` int(11) NOT NULL AUTO_INCREMENT, `label` varchar(30) DEFAULT NULL, `description` varchar(45) DEFAULT NULL, `BrandCode` varchar(45) NOT NULL, `is_visible` bit(1) DEFAULT NULL, PRIMARY KEY (`idproduct`), KEY `PBrandCode` (`BrandCode`) ) ENGINE=InnoDB AUTO_INCREMENT=4030 DEFAULT CHARSET=utf8; riadky /*!40101 SET NAMES utf8 */; /*!40101 SET character_set_client = utf8 */; sú označené ako komentár, ale majú na niečo vplyv? Doma na počítači mi beží aj MySQL, aj Apache a tú istú stránku z tých istých dát v databáze vidím pri nastavenom kódovaní utf8 prehliadača úplne normálne. Predbežne som to riešil tak, že som použil php funkciu iconv: $newtext=iconv("ISO-8859-2", "UTF-8", $text); Aj keď asi systémové riešenie to nie je.
-
SET NAMES utf8; musí být prvním příkazem při každém otevření databáze MySQL. Jinak si DB myslí, že s ní chceš komunikovat švédsky. Dá se to změnit v konfiguraci serveru, ale skoro nikdo to nedělá. Dávám to jako další parametr při otvírání DB, abych ušetřil jeden příkaz, ale hlavně abych na tuto banalitu nezapomněl.