Vpis v MySql bazo in šumniki

Imam skupek kode, ki mi prebere remote xml in podatke vpiše v bazo.

Na 101 vrstici imam MySql query string, ki ima (če ga izpišem) med vrednostmi normalne Č,Š,Ž-je.

Na 102 vrstici imam mysql_query(), ki ta string zapiše v bazo.

Če izpisan string sam copy/pastam v phpMyAdmin se šumniki lepo shraniji. Ko gre query preko mysql_query funkcije se pojavijo v čudni obliki "ščž" = "ščž".

Zanima me kako je možno, da pride do te razlike?

Tako xml kot baza uporabljata utf-8 charset.

8 odgovorov

Takoj po connectu na bazo izvedi se naslednje:

SET NAMES 'utf8';

Jap, moraš nastaviti pravilni encoding php povezave do MySQL-a, kot je že Vini rekel:

mysqlquery("SET NAMES 'utf8' COLLATE 'utf8slovenian_ci'");

Sploh ne vem kako, da nisem pomislil. :D PA se s tem ukvarjam non stop pri Zen Cartu.

Hvala fanta ;)

Ok to je valda delalo BP.

Imam pa še eno vprašanje. (Te čšž-ji delajo same porbleme vedno :P)-

Zakaj hudiča mi:

$string=str_replace("č","è",$string);

zamenja vse c-je? Moram rečt, da str_replace uporabljam že od samih začetkov PHP programiranja in s tem še nisem imel problemov :S

Ideje?

Datoteka v kateri imaš ta

$string=str_replace("č","è",$string);

pa je v UTF8 al ANSI ?

theDegriz, govorim zelo na pamet, ampak, ce imas izbran locale, ki ni slovenski, bi se znalo dogajati prav to, kar opisujes. Zagotovo vem, da nekaj podobnega pocenja MySQL, o cemer sem ze pisal v tem threadu, bi znalo biti, da se nekaj v tem stilu dogaja tudi v PHP.

Pazi, tega nisem preveril, preveri ti in porocaj :)

HeXeR:
Datoteka v kateri imaš ta

$string=str_replace("č","è",$string);

pa je v UTF8 al ANSI ?

Point taken LIFE SAVED.

HeXer hvala. Cel dan sem premetaval eno vrstico. Po vseh tisočih vrstic kode glava kak dan zablokira in potem je štala.

Vsem hvala. Vini tudi tebi hvala ampak na srečo je zadeva rešena :D

Edit: Še enkrat vsem hvala :D CEL DAN.

Saj ko malo bolj razmisljam, sem verjetno kozla ustrelil s tistim gornjim pisanjem, pa vseeno :)