Autor | Zpráva | ||
---|---|---|---|
gardener Profil |
#1 · Zasláno: 22. 7. 2008, 22:41:11 · Upravil/a: gardener
Zdravím
Už jsem tady tento problém řešil jednou, ale bohužel se nevyřešil. Problém je v zaznamenávaní znaků s diakritikou do MySQL databáze.Nastavuji kódování při vytvoření tabulky, připojení k db i při vkládání dat ale stále se stejným výsledkem znaky jako č,š apod..se zobrazí jako otazníky.Nepomohla ani instalace nového MySQL, ani FAQ co jsem četl..zkrátka nic..hlavně mě vadí, že i když nastavuji všude to kodování, tak i přes to to nejede korektně.. Už vážně nevím, co může býti špatně?? Pro úplnost přikládám kód pro vytvoření vytvoření tabulky, připojení k db i a pro vkládání dat.. Kdyby ta chyba někoho trefila do očí, byl bych moc vděčný, už jsem vyzkoušel vše... Děkuji za každou radu.. Vytvoření DB <?php $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, COLLATE utf8_general_ci;"; if(!mysql_query($sql)) { echo mysql_error(); echo("Nepodařilo se vytvoøit databázovou tabulku,zkontrolujte nastavení v db_create.php"); } ?> Spojení <?php $id_spojeni = mysql_connect('localhost','root',''); //command for db connect with three parameters server,user,password if (!$id_spojeni){ die('Spojeno s Mysql DB se nezdarilo.'); } $vysledek_vybrani = mysql_select_db('pokus',$id_spojeni); if (!$vysledek_vybrani){ die('Databazi pokus se nepodarilo vybrat.'); } $nastaveni_kodovani = mysql_query("SET NAMES 'utf8'"); if (!$nastaveni_kodovani){ die('Nepodařilo se nastavit kódování.'); } ?> Vložení dat <?php include("db_connect.php"); //Starting app with verify connect to database mysql_query("SET CHARACTER SET utf8"); $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'; } ?> |
||
Kajman_ Profil * |
#2 · Zasláno: 23. 7. 2008, 09:15:49
Zkuste zkontrolovat, zda je sloupeček v kódování utf8, když jste jen nastavil defaultní porovnání.
show create table seznam |
||
gardener Profil |
#3 · Zasláno: 23. 7. 2008, 10:31:06
Vypadá to, že ano, když jsem položil tento dotaz na db, byl mezi výpisem i tato hodnota "DEFAULT CHARSET=utf8", takže kódování je asi nastaveno dobře..?
|
||
tiso Profil |
#4 · Zasláno: 23. 7. 2008, 13:30:10
Je aj ten PHP súbor (súbory) v utf-8? Posielaš prehliadaču hlavičku o kódovaní súboru?
|
||
gardener Profil |
#5 · Zasláno: 23. 7. 2008, 13:54:09 · Upravil/a: gardener
Ano, až na skript spojení s db a vytvoření db,jelikož ty se includují, tak aby se hlavička neposílala dvakrát..co tak koukám po diskuzích tak spousta lidí pracuje s kódováním Win-1250, čemuž se ale chci vyhnout z důvodu že odjakživa používám UTF-8..
EDIT Teď jsem zjistil, že pokud do skriptu vypíši hlášku s diakritikou, např : $vysledek_vlozeni = mysql_query($sql); if (!$vysledek_vlozeni){ die('Nepodařilo se vložit nový řádek.'); } else{ echo 'Podařilo se vložit nový řádek.'; Tak se nezobrazí české znaky..jestli v tom nebude celý ten problém..? |
||
gardener Profil |
#6 · Zasláno: 23. 7. 2008, 14:26:48
Tak nic nepohlo to:(
|
||
tiso Profil |
#7 · Zasláno: 23. 7. 2008, 14:54:42
gardener - tak potom buď nemáš tie súbory uložené v utf-8, alebo webserver prebíja hlavičku o kódovaní, alebo máš problém s fontami alebo inštaláciou OS. Iná možnosť mi nenapadá... Skús to otestovať na inom PC alebo serveri, či sa to bude chovať rovnako.
|
||
gardener Profil |
#8 · Zasláno: 24. 7. 2008, 13:26:06
Tak jsem došel k zjištění:
Když jsme to zprovoznil na serveru ic.cz tak běží diakritika nádherně hladce,ale pro změnu nefunguje strtolower.. Je to pro mne záhada,proč na localhostu to nejde a na serveru ano.. Ještě mne napadlo nainstalovat nový XAMPP(pokud vychází občas nějaké nové distribuce)? |
||
Kajman_ Profil * |
#9 · Zasláno: 24. 7. 2008, 13:36:15
Na utf8 se v php používá mb_strtolower.
Klidně si můžete nainstalovat aktuální stabilní mysql sám i bez ostatních aplikací. |
||
gardener Profil |
#10 · Zasláno: 24. 7. 2008, 13:54:58
To jsem už ale udělal a stejně to nefunguje..
|
||
gardener Profil |
#11 · Zasláno: 24. 7. 2008, 14:30:41
Tak jsem nainstaloval nový XAMPP, spustil, založil novou db.bohužel se mi nyní pro změnu neuloží data (písmena), čísla se uloží bez problémů ale co je písmenem nikoliv..to už vážně nechápu, co s tím, když se to všeude chová jinak..
|
||
Časová prodleva: 16 let
|
0