Autor Zpráva
Vilak
Profil
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
Vilak:
Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština
juriad
Profil
Některé časteji řešené dotazy pro MySQL - FAQ » MySQL a čeština
Vilak
Profil
Díky. Podívu se. :)
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();
?>
Zápis v MySQL:
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
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
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
Prostě mi to třeba z "Čáča" udělá "Čáča" A nevím, proč.
Taps
Profil
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
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ý?

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: