« 1 2 »
Autor Zpráva
I am
Profil *
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 *
A hlavně poté importovat do nové db.. importuji jen všechny tabulky..
I am
Profil *
Tak jsem zjistil že problém vzniká již při exportu..
tiso
Profil
I am - máš vôbec data v správnom kódovaní v tej databáze?
I am
Profil *
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 *
jinak když dám v phpmyadminovi projít tak už je tam také ta chyba :(
I am
Profil *
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 *
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 *
Jinak v těch scriptech nikde není nastaveno SET names nebo CHARACTER a jsou psány v CP1250
I am
Profil *
Opravdu nikdo netušíte? :o) já to vážně nějak nechápu :(
I am
Profil *
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 *
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 *
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 *
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 *
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
I am:
Nepřevádí si to CMS interně přes iconv? Můžete udělat to samé.
I am
Profil *
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
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 *
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
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 *
A napadá vás jak to vyexportovat pomocí phpmyadmina? ten je psanej v utf8
I am
Profil *
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 *
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 *
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 *
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
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 *
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 *
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
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 *
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...
« 1 2 »

Vaše odpověď

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0