Registrace nového uživatele     Návod     Kluby     Archív  Lopuchu     Lopuch.cz  

Diskuze na Lopuchu,
pohlazení na duchu

Lopuch.cz

Jméno:
Heslo:
Podpora LCD:
 
Klub Database (mysql,...) [ŽP: neomezená] (kategorie Programování) moderuje melkor_unlimited.
Archiv
  Nastavení klubu     Nastavení práv     Homepage     Anketa     Přítomní     Oblíbené     Lopuch     Kategorie  
autor: 
text: 
vyplnit a 
Help
 Titulek, text příspěvku  
Opište pozpátku následující text bez prostředního znaku: bcbzntm
[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  
knedle knedle online - Krabice živých 18.3.2009 13:01  878
v tomto ti neporadim, nemam (cizi) rs rad
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.3.2009 10:10  877
dotaz k RS:-)
ještě něco, zkuste mi doporučit nějaký RS, (který nebude mít problém s migrací z jednoho serveru na druhý) a který bude velmi variabilní ohledně ladění designu pomocí css a umožní i vícejazyčnou strukturu, utf-8, možnost zásuvných modulů, snadné editace, možnosti optimalizace pro SEO atd ...
tohle vše (až na tu špatnou češtinu po migraci) mi splňoval Websitebaker
:-)
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 18.3.2009 09:27  876
ad postup pepak:1) Udělat dump databáze.
2) Zkonvertovat dump (jako text) do nějakého jednobajtového českého kódování (Win1250, Latin2, whatever).
3) Provést search-and-replace pro všechny české znaky.
4) Výsledek znovu zkonvertovat do UTF8.
5) Na začátek dumpu dopsat řádek SET NAMES utf8; - velmi důležité a dost dobře nechápu, proč to tam PhpMyAdmin nedává sám.
6) Naimportovat do nového serveru.
7) Po ověření, že se to zobrazuje dobře, si udělat zálohu starých špatných dat (pokud možno opět v binární podobě) a naimportovat to i do nich, aby to bylo dobře všude.

jak udělat bod 2 a 3 (pomocí jakých nástrojů) ?
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 17.3.2009 15:30  873
pepak: uvažuji již o tom

zkusím se kouknout na ten Etomite
pepak pepak - Pepak.net 17.3.2009 15:26  872
No když ten postup vidím - nechceš radši přejít na jiný RS? Jako postup "nainstalovat a pak všechno zase přepsat", to mi přijde jako fakt úchylnost a docela bych se bál, co asi tak bude ten RS mít za blbosti v kódu, když dělá takovéhle kraviny v procesech...
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 17.3.2009 15:21  871
jukněte ještě semWebsite Baker Help Project - Moving from Server A to B
jesli nedělám nějaký kopanec já ...
pepak pepak - Pepak.net 17.3.2009 15:20  870
Knedle: Taky mám podobný, ale udělaný primárně pro případ "dobrá data, blbá metadata". Ale na případ "dobrá data, dobrá metadata" by šel použít taky, to je jen speciální případ téhož :-)
pepak pepak - Pepak.net 17.3.2009 15:20  869
Puschpull: Není to tak strašné. Ty teď musíš udělat tři věci, které na sobě v podstatě nezávisí:

1) Opravit ten bordel v databázi (asi nejspíš tím postupem, co jsem nastínil). To ti mimo jiné vyřeší problém s tím, že web nejde přesunout na jiný hosting (a podotýkám, až to uděláš, tak bys to měl mít vyřešené "navždy"). Při tom search-and-replace kroku mimochodem můžeš rovnou zkonvertovat i tu češtinu uloženou v entitách.

2) Upravit WSB, aby nepoužíval HtmlEntities ale jen HtmlSpecialChars(). Tím vyřešíš vkládání entit místo českých znaků.

3) Vzít si čistý WSB a odtrasovat si, co ten blbec dělá se stringem "příliš žluťoučký kůň úpěl ďábelské ódy" předtím, než ho zapíše do databáze - prostě si na každý druhý řádek dát echo $promenna;. Jsem si dost jistý, že tam někde volá funkci, která ÚTF8 vstup zakóduje (po nějaké drobné konverzi) ještě jednou do UTF8. Tak tu nadbytečnou konverzi budeš chtít vyhodit.
knedle knedle online - Krabice živých 17.3.2009 15:13  868
pepak [866]: zkazil si mi radost - nicmene ja si to udelal "pro jistotu"
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 17.3.2009 15:10  867
pepak: díky za informacekoukám, že je toho práce jak na kostele

samozřejmě bych byl nejraději, kdyby RS fungoval třeba tak, aby uměl tytvoři vájejazyčné stránky kde by byla třeba verze ENG/CZ/RUS/JAP
a celé na utf-8 kodování
(naivně jsem si myslel, že to lze) ale když tam do toho z nějakého důvody RS WebsiteBaker pořád cpe nějaké entity, tak to je asi na nic

Vytvoři by to tedy asi šlo, ale nešlo by vytvořený web přenést na jiný server (nebo resp. šlo, ale bylo by s tím víc práce a starost než twornou webů)
hmmm

ještě to nevzdávám, WSB má pro mě tolik kladů, že mu ještě chci dát šanci
pepak pepak - Pepak.net 17.3.2009 15:01  866
Knedle: To ale bude fungovat za jednoho zásadního předpokladu: Že v databázi odpovídají data metadatům. Ovšem pokud je tento předpoklad splněn, tak obvykle žádnou konverzi do UTF8 dělat nepotřebuješ, protože ti ji klidně udělá sama databáze (potřeba je to jen v případě, že by skutečně přicházelo v úvahu víceabecední prostředí, tj. že by mi třeba do fóra přispívali rusové).
pepak pepak - Pepak.net 17.3.2009 14:59  865
No, takže základní problém, proč to puschpullovi nejde, je vidět na tomto obrázku - ten obrázek je mimochodem důvod, proč jsem pořád tak tvrdohlavě trval na tom, abych dostal data "přímo z dumpu":
http://puschpull.org/root/a/Win_Hex_05.png

Když se podíváte na "zaměstnanci" (od offsetu 48E557), zjistíte, že data jsou sice uložena v UTF-8, ALE jsou dvojnásobně zakódovaná: ta sekvence bajtů C3 84 E2 80 BA jsou dva UTF-8 znaky, které kdyby se převedly do Windows-1250 (znak -> znak), tak by se velmi podobaly tomu, jak vypadá UTF-8 znak zobrazený editorem, který UTF-8 neumí (neodpovídá to přímo "ě", ale to může docela dobře být tím, že evidentně proběhla konverze převeď_na_UTF8(ber_string_jako_nějaké_ANSI_kódování(UTF8vstup)). Pravděpodobně tam ještě navíc někde bylo vnořeno volání htmlentities(), aby to z některých znaků udělalo entity.

Každopádně tohle se jen na databázové úrovni opravit nedá. Jako nejschůdnejší postup bych viděl (za předpokladu, že v tom jsou jenom české texty a ne i nějaká čínština):
1) Udělat dump databáze.
2) Zkonvertovat dump (jako text) do nějakého jednobajtového českého kódování (Win1250, Latin2, whatever).
3) Provést search-and-replace pro všechny české znaky.
4) Výsledek znovu zkonvertovat do UTF8.
5) Na začátek dumpu dopsat řádek SET NAMES utf8; - velmi důležité a dost dobře nechápu, proč to tam PhpMyAdmin nedává sám.
6) Naimportovat do nového serveru.
7) Po ověření, že se to zobrazuje dobře, si udělat zálohu starých špatných dat (pokud možno opět v binární podobě) a naimportovat to i do nich, aby to bylo dobře všude.
knedle knedle online - Krabice živých 17.3.2009 14:53  864
prave jsem dokopal skript pro prekopani kodovani uvnitr db na nejake
je to lehce upravenej script od Vrany, ale pouzivam dibi

// prekonvertovani kompletne vseho na UTF
// 1. db
// 2. tabulky
// 3. sloupce tabulek 

$character_set = "utf8";
$collate = "utf8_czech_ci";

// nejdrive databazi
dibi::query('ALTER DATABASE `'.$db['database'].'` DEFAULT CHARACTER SET '.$character_set.' COLLATE '.$collate);

// pak vsechny tabulky
$result = dibi::query('SHOW tables');
foreach ($result as $n => $row) {
    echo $tab = $row['Tables_in_'.$db['database']];
    
    exit;
    // zmenim kodovani tabulce
    dibi::query('ALTER TABLE `'.$tab.'` DEFAULT CHARACTER SET '.$character_set.' COLLATE '.$collate);
	// zjistim sloupce tabulky
    $result2 = dibi::query("SHOW COLUMNS FROM ".$tab);
    // a uvnitr tabulek pak i sloupce
    foreach ($result2 as $row1) {
        if (preg_match('~char|text|enum|set~', $row1["Type"])) {
            dibi::query("ALTER TABLE `".$tab."` CHANGE `".$row1[Field]."` `".$row1[Field]."` ".$row1["Type"]." CHARACTER SET ".$character_set." COLLATE ".$collate." NULL DEFAULT NULL");
            //ALTER TABLE `newsletter` CHANGE `captions` `captions` TEXT CHARACTER SET utf8 COLLATE utf8_czech_ci NULL DEFAULT NULL
        }    	
    }
    
    echo "tab ".$tab." hotova".BR;
    flush(); flush();

}
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 17.3.2009 14:53  863
znáte tenhle RSjdu vyzkoušet i něco jiného než WSB (ale štve mě to)

Redakčný systém Etomite, zdarma - O Etomite
puschpull puschpull být nad věcí, pohoda a klid ... - AV-Com (Homepage) 17.3.2009 14:08  862
no jo no, pořád niczměnil jsem si kodování DB na serveru
ALTER DATABASE `xxxxxx` DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci

nainstaloval znovy prázdný RS

vyexportval obsah tabulek týkajících se obsahu a názvů stránek vytvořených na localhostu

importival pomocí SQL dotazu v phpMyAdmin na serveru

výsledek je pořád stejně blbý

Web AIMON - Reference

[ 1008 ] <Novější  <<<Nejnovější  Nejstarší>>>  Starší>  

(c) 2001-2011 Lopuch.cz   
Kontakt