Autor | Zpráva | ||
---|---|---|---|
I am Profil * |
#1 · Zasláno: 10. 2. 2009, 14:05:03
Ahoj, mám mysql db do které si PHPfusion ukládá data. Všecky tabulky mají porovnávání nastaveno latin2_czech_cs a porovnávání celé db je také na latin2_czech_cs. Znaková sada v MySQL: UTF-8 Unicode (utf8). Když to exportuji do zip souboru a následně nahraju na nový server do db co má porovnávání taky na latin2_czech_cs tak se mi zničí "ě" prostě nějaký problém s kódováním. Ta nová db má znak. sadu taky UTF-8 a porovnávání latin2_czech_cs - tak kde je chyba? Jak to správně exportovat? (Používám k tomu PHPmyADMINA)
|
||
I am Profil * |
#2 · Zasláno: 10. 2. 2009, 14:05:52
A hlavně poté importovat do nové db.. importuji jen všechny tabulky..
|
||
I am Profil * |
#3 · Zasláno: 10. 2. 2009, 14:30:06
Tak jsem zjistil že problém vzniká již při exportu..
|
||
tiso Profil |
#4 · Zasláno: 10. 2. 2009, 14:32:00
I am - máš vôbec data v správnom kódovaní v tej databáze?
|
||
I am Profil * |
#5 · Zasláno: 10. 2. 2009, 14:38:57
To nevím, ale dosud to fungovalo.. jde mi jenom o to exportovat ten web z jednoho webhostingu na druhý.. soubory CMS se zkopírovali v pohodě, ale ta databáze blbne :( - je tam mysql 5, na starém byla 4, může to mít vliv?
V jakém kódování to tam je nevím, neprogramoval sem Phpfusion... Problém vzniká při exportu místo třeba ž č a pod se udělají otazníky. |
||
I am Profil * |
#6 · Zasláno: 10. 2. 2009, 14:40:42
jinak když dám v phpmyadminovi projít tak už je tam také ta chyba :(
|
||
I am Profil * |
#7 · Zasláno: 10. 2. 2009, 14:43:51
Zkoušel jsem změnit Porovnávání pro toto připojení k MySQL: na utf8, win i to latin2 ale jsou tam stále otazníky když dám v projít :o)
|
||
I am Profil * |
#8 · Zasláno: 10. 2. 2009, 14:55:03
Jako sem úplně na dně z toho :( Zkoušel sem třeba
SET NAMES 'cp1250'; SET CHARACTER SET cp1250; SELECT * FROM `fusion_admin`; ale phpmyadmin stejnak vrací otazníky.. |
||
I am Profil * |
#9 · Zasláno: 10. 2. 2009, 15:36:58
Jinak v těch scriptech nikde není nastaveno SET names nebo CHARACTER a jsou psány v CP1250
|
||
I am Profil * |
#10 · Zasláno: 10. 2. 2009, 16:14:34
Opravdu nikdo netušíte? :o) já to vážně nějak nechápu :(
|
||
I am Profil * |
#11 · Zasláno: 10. 2. 2009, 16:57:40
Tak to vypadá že data jsou v databázi v jiném kódování, safra, jak to přetransportovat? :( dumpy to kódování zničí (mimochodem stejně pořád nevím jaké tam je! :((( )
|
||
I am Profil * |
#12 · Zasláno: 11. 2. 2009, 09:31:24
Našel jsem tohle, ale ani jedna z těch rad nepomohla :(
http://diskuse.jakpsatweb.cz/index.php?action=vthread&forum=28&topic=81170 |
||
I am Profil * |
#13 · Zasláno: 11. 2. 2009, 09:41:44
Takhle nějak to vypadá - místo některých znaků jsou tam prostě otazníky, nepomáhá ani zkusit překódovat v nějakém editoru.
INSERT INTO `fusion_admin` (`admin_id`, `admin_rights`, `admin_image`, `admin_title`, `admin_link`, `admin_page`) VALUES (1, 'AD', 'admins.gif', 'Administrátoři', 'administrators.php', 2), (2, 'AC', 'article_cats.gif', 'Články ( Kategorie )', 'article_cats.php', 1), (3, 'A', 'articles.gif', 'Články', 'articles.php', 1), (4, 'B', 'blacklist.gif', 'Blacklist', 'blacklist.php', 2), (5, 'C', '', 'Komentáře', 'reserved', 2), (6, 'CP', 'c-pages.gif', 'Vlastní stránky', 'custom_pages.php', 1), (7, 'DB', 'db_backup.gif', 'Záloha databáze', 'db_backup.php', 3), (8, 'DC', 'dl_cats.gif', 'Soubory ke sta?ení ( Kategorie )', 'download_cats.php', 1), |
||
Kajman_ Profil * |
#14 · Zasláno: 11. 2. 2009, 09:48:52
Musíte si nejprve dát data v db do pořádku, aby byly v pma dobře.
http://php.vrana.cz/prevod-kodovani-mysql.php |
||
I am Profil * |
#15 · Zasláno: 11. 2. 2009, 10:06:43
Kajman_
A jak zjistím na jaké kódování to převést? A hlavně, na ic.cz nemohu pustit ten script přes shell, lze ho nějak spustit i z prohlížeče? Hlavně nerozumím tomu, že CMS si ty data načte správně, ale phpmyadmin ne.. |
||
Aesir Profil |
#16 · Zasláno: 11. 2. 2009, 10:14:49
I am:
Nepřevádí si to CMS interně přes iconv? Můžete udělat to samé. |
||
I am Profil * |
#17 · Zasláno: 11. 2. 2009, 10:18:51
Aesir
Nepřevádí. Hledal jsem ve všech souborech phpfusion pomocí pspadu sem prohledal složky i posložky a funce iconv tam nikde použita není, ani nějaké SET NAMES... Hlavně mi pořád zůstává záhadou v jakém kódování jsou data v tabulkách skutečně uložena :o) |
||
Aesir Profil |
#18 · Zasláno: 11. 2. 2009, 10:25:27
I am:
„Hlavně mi pořád zůstává záhadou v jakém kódování jsou data v tabulkách skutečně uložena :o)“ Řekl bych, že jste si odpověděl sám už výše: „Jinak v těch scriptech nikde není nastaveno SET names nebo CHARACTER a jsou psány v CP1250“ |
||
I am Profil * |
#19 · Zasláno: 11. 2. 2009, 10:28:20
No, ale proč v tom případě když nastavím kódování pro připojení k db v phpmyadminu na cp1250, či před výběrem provedu SET NAMES 'cp1250' tak proč jsou data stejně takhle špatně překódovaná?
|
||
tiso Profil |
#20 · Zasláno: 11. 2. 2009, 10:33:53
I am - to je jasné: PHP skript napísaný v cp1250 je pripojený k DB pomocou default charset. Pokiaľ teda default charset na DB nebolo cp1250, tak ich tam máš zle uložené.
Jedno z riešení: vytiahnuť dáta z DB pomocou skriptu napísaného v cp1250 a vytvoriť si ten import pomocou toho skriptu. |
||
I am Profil * |
#21 · Zasláno: 11. 2. 2009, 10:48:47
A napadá vás jak to vyexportovat pomocí phpmyadmina? ten je psanej v utf8
|
||
I am Profil * |
#22 · Zasláno: 11. 2. 2009, 12:57:20
Zkoušel jsem udělat dump pomocí http://odvarko.cz/mysqldump-pro-php a ty scripty sem v pspadu uložil jako cp1250, ale pořád mám v dumpu paznaky :(
|
||
I am Profil * |
#23 · Zasláno: 11. 2. 2009, 13:34:56
Co tam dělám za chybu? Už mi zůstává rozum stát! Ta všechny ti scripty na dump jsou v cp1250 a nikde se tam set names nedělá nebo ano? využívám tuto třídu:
http://pastebin.com/m739da893 |
||
I am Profil * |
#24 · Zasláno: 11. 2. 2009, 13:35:53
A tímhle ji pak použiju
<? include "config.php"; require_once('dump.php'); mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_name); //mysql_query('SET CHARACTER SET latin2'); # budeme posílat SQL soubor "zaloha_moji_databaze.sql" # a chceme prohližeč rovnou vyzvat k uložení (attachment) #header('Content-Type: text/x-sql'); #header('Content-Disposition: attachment; filename="dump.sql"'); # neukládat data do cache #header('Cache-Control: no-cache, must-revalidate'); #header('Expires: Thu, 30 Jun 1988 12:00:00 +0000 GMT'); # pro MEDIUMBLOB/MEDIUMTEXT sloupce je třeba navýšit paměť //ini_set('memory_limit', '32M'); # poslat dump na výstup $fp = fopen('dump.sql', 'w'); fmysqldump($fp); fclose($fp); ?> |
||
I am Profil * |
#25 · Zasláno: 11. 2. 2009, 19:12:21
Mohlo by pomoct zkusit před dotazem poslat mysql (samozřejmě místo x cp1250)?
SET character_set_client = x; SET character_set_results = x; SET character_set_connection = x; |
||
tiso Profil |
#26 · Zasláno: 11. 2. 2009, 21:44:38 · Upravil/a: tiso
I am - tie skripty z php fusion nemusia byť v kódovaní cp1250. Našiel som tam niekde iso-8859-1, skús to, a nie len to. Prípadne posielaj aj php header() pred výstupom toho dumpu, uvidíš čo ti z toho pôjde...
|
||
I am Profil * |
#27 · Zasláno: 11. 2. 2009, 22:49:48
tiso
jde mi z toho pořád to samé :( scripty sem uložil Jeditem v iso-8859-1 a před výstupem posílám header('Content-type: text/x-sql; charset=iso-8859-1'); pořát tam jsou otazníku, safra to je oříšek :( |
||
I am Profil * |
#28 · Zasláno: 11. 2. 2009, 23:02:08
Zkoušel jsem i iso-8859-2 nebo cp1250, fakt starej phpfusion je největší zlo :( návod na konverzi co mají na webu mi samozřejmě nefunguje - http://php-fusion.co.uk/forum/viewthread.php?thread_id=19106#post_105339
|
||
tiso Profil |
#29 · Zasláno: 11. 2. 2009, 23:04:23
I am - tak takto: ulož pomocou toho php fusion do DB tento text:
aáäbcčdďeéěfghiíjklĺľmnňoóôpqrŕřsštťuúůvwxyýzž A napíš čo ti vráti ten skript v rôznych kódovaniach. Mimochodom v tom tvojom dumpovom config.php nenastavuješ SET NAMES pri pripojení k DB, že nie? |
||
I am Profil * |
#30 · Zasláno: 11. 2. 2009, 23:32:08
Ne, protože sem projel všechny soubory fusion a taky tam nikde neprovádí SET NAMES.
Jinak když udělám jednoduchý selec tímto scriptem: <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>hh</title> </head> <body> <?php // database settings $db_host="mysql.hustej.net"; $db_user="hn_tranzit"; $db_pass="tranzittranzit"; $db_name="hn_tranzit"; $db_prefix="fusion_"; define("DB_PREFIX", "fusion_"); $spojeni=mysql_connect($db_host,$db_user,$db_pass); mysql_select_db($db_name); //mysql_query("SET NAMES 'cp1257'"); //mysql_query("SET CHARACTER SET 'latin2'"); $vysledek=mysql_query("SELECT * FROM `fusion_settings`"); while ($zaznam=MySQL_Fetch_Array($vysledek)): echo $zaznam["siteintro"]."<BR>\n"; endwhile; ?> </body> </html> a tento script uložím v cp1250 nebo utf8 tak to ty data našte správně s háčky i čárkami... |
||
Téma pokračuje na další straně.
|
0