Autor | Zpráva | ||
---|---|---|---|
Vilak Profil |
#1 · Zasláno: 8. 11. 2016, 20:22:47
Zdarec. Mám MySQL databázi a nefunguje mi tam diakritika. Háčky, čárky apod. prostě nejdou. Proměnné, které zapisuju do příkazu, aby se následně zapsali do DB fungují dobře a diakritiku obsahují. MySQL databázi mám v UTF-8, kde může být problém?
|
||
Taps Profil |
#2 · Zasláno: 8. 11. 2016, 20:30:01
|
||
juriad Profil |
#3 · Zasláno: 8. 11. 2016, 20:30:18
|
||
Vilak Profil |
#4 · Zasláno: 8. 11. 2016, 20:39:36
Díky. Podívu se. :)
|
||
Časová prodleva: 9 dní
|
|||
Vilak Profil |
Promiňte, že reaguji až teď, ale musel jsem dodělávat důležitější věci.
Furt mi to nejde. Pro příklad: přípojení k databází - db.php <?php $dbname = ""; $servername = ""; $username = ""; $password = ""; // ^^ toto mám normálně vyplněné... try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } catch (PDOExcetion $e) { echo "Připojení selhalo: " . $e->getMessage(); } mysql_set_charset("utf8"); // toto jsem zkusil vložit z odkazu, který jste mi zaslali ?> Ukázka skriptu: <?php include "../db/db.php"; $stmt = $conn->prepare("INSERT INTO `gallery_small` (`headline`, `page`) VALUES ('$headline', '$page')"); $stmt->execute(); // vím, že $headline = Čáča => vypíše se to při var_dump(); // vím, že $page = g-caca.php => vypíše se to při var_dump(); ?> headline: ČáÄa page: g-caca.php Jen chci ještě dodat, že v MySQL můžu normálně řádek upravit na Čáča a uloží se tak. skript pro vytvoření této MySQL tabulky: CREATE TABLE `gallery_small` ( `id` INT( 6 ) NOT NULL AUTO_INCREMENT, `headline` VARCHAR( 280 ) NOT NULL, `page` VARCHAR( 280 ) NOT NULL, PRIMARY KEY (`id`) )ENGINE=MYISAM CHARACTER SET utf8 COLLATE utf8_unicode_ci Kde je tedy chyba? Předem děkuji za odpovědi. |
||
Jakub J. Profil |
#6 · Zasláno: 17. 11. 2016, 13:49:54
Reaguji na Vilaka:
Používáš PDO, volání mysql_set_charset() tedy nic nedělá a můžeš jej smazat. Místo toho zkus nastavit kódování v DSN:
$conn = new PDO("mysql:host=$servername;dbname=$dbname;charset=utf8", $username, $password); |
||
Vilak Profil |
YEP! Funguje!
Ale narazil jsem ještě na jeden problém. To samé se mi děje při vytváření souborů mkdir. Jak tomu předejít? Ani při nahrávání fotografií to nefunguje. Taky tam nejde diakritika, proč? if (!file_exists("../../galerie/".$headline)) { mkdir("../../galerie/".$headline, 0777); } Jak tomu předejít zde? Nakonec jsem to udělal tak, že to převedu na text bez diakritiky, ale řešení mě stále zajímá. |
||
Davex Profil |
#8 · Zasláno: 18. 11. 2016, 00:13:23
Vilak:
„Ani při nahrávání fotografií to nefunguje. Taky tam nejde diakritika, proč?“ Co si představuješ pod slovy „nefunguje“ a „nejde“? |
||
Vilak Profil |
#9 · Zasláno: 18. 11. 2016, 00:40:57
Prostě mi to třeba z "Čáča" udělá "ČáÄa" A nevím, proč.
|
||
Taps Profil |
#10 · Zasláno: 18. 11. 2016, 10:38:35
Vilak:
u uploadu souborů je lepší používat názvy bez diakritiky. Co se týče ukládání do databáze, tak se zkus podívat v jakém kodování máš napsán soubor, který ukládá data do databáze. Je nutné, aby i soubor byl v kodování utf8 |
||
Davex Profil |
#11 · Zasláno: 18. 11. 2016, 21:10:57
Vilak:
„z "Čáča" udělá "ČáÄ�a"“ To jméno adresáře zjišťuješ jak? Není možné, že jméno je uložené správně, ale ty ho špatně zobrazuješ, třeba nějakým programem, který je špatně nastavený? |
||
Časová prodleva: 7 let
|
0