Fórum Root.cz
Hlavní témata => Server => Téma založeno: Smokie 21. 09. 2011, 13:43:50
-
Zdravím,
ide o synchronizáciu dvoch mysql databáz. Obidve sú v UTF-8, koláciu majú v UTF-8 a aj stľpce majú UTF-8.
Synchronizácia prebieha tak, že sa obsah databázy uloží do json cez funkciu json_encode, ktorá iné data než v UTF-8 ani nepríjme a potom sa tieto json súbory skriptom stiahnu a na localhoste rozbalia a načítajú do lokálnej databázy. Tam už nastáva problém, lebo už je diakritika poškodená. Zisťoval som cez mb_detect_encoding aké je kódovanie pred uložením do json, pri výbere z databázy, pri uložení do databázy a vždy mi odpovie, že ide o UTF-8.
Rovnaký problém je zase pri ceste späť kedy sa z lokálnej databázy stiahnú údaje do .sql súborov a cez ftp sa skriptom odošlú na vzdialenú stranu.
Skúšal som už všeličo možné, či už pred selectami vykonať SET CHARACTER SET utf8 alebo to kódovať cez iconv alebo už neviem čo. Ale stále sa neviem cez to dostať.
Budem veľmi vďačný za akékoľvek nápdy a rady.
-
Zkuste místo
SET CHARACTER SET utf8
použít
SET NAMES utf8
-
Vyskúšal som, ale bohužiaľ to problém nevyriešilo. Skúsil som to dať pred select, ktorý vyberá tie údaje na localhoste do adminu vo WordPresse. Potom som to skúsil dať do selectov, ktoré na vzdialenej strane vyberú údaje z databázy ako prvé a posielajú ich na spracovanie do json súborov. Ale ani tam to nepomohlo, dokonca to bolo horšie, čiže ako keby sa to už viackrát prekódovalo.
-
Zkus ověřit, jestli server opravdu stáhl json v UTF8 - taky to může brát jako nějaké jiné kódování.
-
ten sql soubor je taky v utf-8? Na http://cz.php.net/manual/en/function.fopen.php je zmínka v komentářích o vytváření souborů v utf-8. A co takhle json ještě zakódovat pomocí base64?
-
Tie subory su podla vsetkeho v UTF8. Aj obidve databazy su v UTF8. Vsade je nastavena collacia utf8_slovak_ci. Na oboch stranach.
Na oboch stranach sa taktiez vypisuje po zadani
SHOW VARIABLES LIKE 'character_set%';
SHOW VARIABLES LIKE 'collation%';
character_set_client utf8
character_set_connection utf8
character_set_database utf8
character_set_filesystem binary
character_set_results utf8
character_set_server utf8
character_set_system utf8
character_sets_dir /usr/share/mysql/charsets/
Ale co nedokazem pochopit je to, ze mysql_client_encoding na vzdialenej strane pri exportovani dat do json mi vypisuje latin1... A neviem ci prave toto nie je ten problem. Ja by som tam cakal utf8, neviem odkial sa tam latin1 moze brat.
-
Obidve databazy som vycistil a skusal to s novymi datmi, ktore boli vlozene cez wp-admin, ktory mal utf8 kodovanie. Neviem kde sa tam to latin1 moze brat.
-
Tak sa mi podarilo pomocou
mysql_set_charset('utf8',$cnx);
dosiahnut to, ze mysql_client_encoding($cnx);
mi vrati utf8 namiesto latin1.
Ale aj tak sa po prenose z éíáýžťčšľ stane éÃÂáýžťÄšľ. To uz vyzera poriadne divoko... Ako x-krat pozute...
-
Nakoniec je vsetko vyriesene. :)
Stacilo vsetko dat do UTF8 ale hlavne na spravnych miestach nastavit mysql_set_charset.