Autor Zpráva
gardener
Profil
Zdravím
Mám problém s diakritikou u vkládaných dat do MySQL
Tabulku si vytvořím v UTF8 kódování a veškeré skripty a HTML mám taktéž v UTF8 ale pokud vkládám data s diakritikou, zobrazí se v DB rozsypaný čaj:)
Netuší někdo, kde by mohla býti chyba?

Děkuji za jakoukolliv radu

Zde je příkaz pro vytvoření tabulky:

$sql = "CREATE TABLE IF NOT EXISTS seznam (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT,
interpret VARCHAR(30) NOT NULL,
album VARCHAR(30) NOT NULL,
styl TEXT(30) NOT NULL,
rok_vydani YEAR(4),
zeme_puvodu TEXT(30),
kdy_zaloha VARCHAR(15) NOT NULL,
kde_najdu VARCHAR(15) NOT NULL
)
TYPE = myisam,
DEFAULT CHARACTER SET UTF8;";
Jan Tvrdík
Profil
gardener
Hledej, "SET NAMES UTF8"
gardener
Profil
To se zde nemůže použít DEFAULT CHARACTER SET UTF8;?
Jan Tvrdík
Profil
gardener
Může, ale myslím, že nepomůže.
UTFG!
gardener
Profil
Tak jsem na to hledal odpověď ale k ničemu pořádnímu jsem nedospěl, snad jen že je třeba nastavit
SET NAMES 'charset_name'
SET CHARACTER SET charset_name

při vytváření databáze ale pokud vkládám znaky do db tak nevím jak to ošetřit,data vkládám pomocí pole, tak jestli to nemám nastavit tam?

Díky za jakoukolliv radu
<?php
include("db_connect.php"); 
//Starting app with verify connect to database

$set = array();

$set["interpret"] = "'$_POST[interpret]'";
$set["album"] = "'$_POST[album]'";
$set["styl"] = "'$_POST[styl]'";
$set["rok_vydani"] = "'$_POST[rok]'";
$set["zeme_puvodu"] = "'$_POST[puvod]'";
$set["kdy_zaloha"] = "'$_POST[zaloha]'";
$set["kde_najdu"] = "'$_POST[umisteni]'";

$sql =("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")");

$vysledek_vlozeni = mysql_query($sql);
if (!$vysledek_vlozeni){
die('Nepodarilo se vlozit novy radek.');
}
else{
echo 'podarilo se vlozit novy radek';
}
?>
Mastodont
Profil
SET NAMES volej i po připojení k databázi, ještě před odesláním dotazu.
gardener
Profil
To jsem udělal ale bez výsledku, nyní jsme se dočetl že snad COLLATE utf8_czech_ci by mohlo pomoci..

EDIT:COLLATE utf8_czech_ci mi pomohlo nastavit porovnávání na utf8_czech_ci, což je fajn ale zápis v tabulce je stále rozsypaný čaj..
gardener
Profil
Tak jsem přidál ještě mysql_query("SET CHARACTER SET utf8"); i do kodu pro vložení dat, nastala změna..místo "čaje" se mi zobrazují nyní místo znaků s diakritikou otazníky, což je pokrok dopředu..za chvíli už to určitě půjde korektně:)
mysql_query("SET CHARACTER SET utf8");


$sql =("INSERT INTO seznam (" . implode(", ", array_keys($set)) . ") VALUES (" .strtolower(implode(", ", $set)) . ")");
animatorjevajcak
Profil *
zdravim,
ja som sa dopracoval tiez az k tym otaznikom (místo "čaje" se mi zobrazují nyní místo znaků s diakritikou otazníky)

a odstranit tie otazniky zatial neviem.. vsade kde som vedel som nastavil UTF8

neexistuje na to nejaky zaruceny silny trik?
animatorjevajcak
Profil *
uz to ide..
takze odvolavam pomohlo mysql_query("SET CHARACTER SET utf8"); ale nechcelo ist predtym.. dikes.

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: