Autor Zpráva
juneau
Profil
Tento dotaz není typu "Mám na stránce otazníky místo ž,š,č, co s tím?", to hned na úvod. Jde totiž o to, že bych rád svůj redakční systém předělal z windows-1250 na utf-8. Se soubory to nebude problém, ale hloubám nad tím, jak nejsnáze to provést s databází. Vyexportovat, uložit jako utf8, nahrát zpátky? Pravděpodobně jeden způsob.

Jenže co si počnou méně zdatní uživatelé, pokud budou chtít také upgradovat na novou verzi? Soubory přehrají snadno, ale pak bych potřeboval nějaký automatický script, který by se postaral o převod databáze. Nemusí jít ani tak o převod jako o zajištění toho, aby se po upgradu nevyskytly problémy s kódování výstupu/vstupu do databáze. Tak bych rád slyšel rady zkušenějších, na co si mám dát pozor.
souki
Profil
Právě řeším něco podobného s velkou databází. Říkal jsem si, že prostě vyexportuju všechna a data (asi 70MB textu) a chytrým programem to převedu. A pak vesele naimportuju zpátky. Jenže to znamená výapdek, Kdyby to šlo nějakým chytrým scriptem, naplánoval bych to cronem na 4:00..... Asi to bude jednoduché, ale jsem dost líný... Nevíte o něčem hotovém?

EDIT: omlouvám se. Nečetl jsem úvodní příspěvek dokonce a tak jsem troško OT. Ale aspon jsme si zajistil sledování mailem
Joker
Profil
Já jsem nakonec nechal databázi tak jak je a při práci s databází převádím kódování.
Je na to docela pěkná knihovna AutoCzech
gaminn
Profil *
Pokud to má být všechno automatické, vypsal bych si všechny tabulky (mysql_list_tables), z nich vybíral data, v každé položce řádku provedl iconv(...) (popřípadě iconv vynechal, když by šlo o číslo (u desetinných čísel by se mohl vyskytnout problém s přeměnou tečky za čárku při převodu čísla na string)), změnil porovnání tabulky a sloupců a šup zpátky do tabulky. Nemusel by to být až takový problém. Ale kdo ví...;)
juneau
Profil
gaminn
To je postup, ktery asi pouziju, ale kdyby to stacilo jen osetrit nejakou "vrstvou" mezi systemem a databazi, byl bych taky pro.
gaminn
Profil *
juneau

Dejme tomu, že ošetření onou vrstvou by bylo i flexibilnější, ale kdo používá každý den databázi s jiným kódováním?;)

Stačí si tedy jen vytvořit třídu (zřejmě celou statickou) pracující s databází, přes kterou budou proudit veškerá data, která zde můžeš požadovaným způsobem měnit (tedy aplikovat na ně dle potřeby iconv()). Zase to ale bude pomalejší, pokud se má na všechna data aplikovat daný postup. Ale o to asi až tak nejde.

Myslím, že tady by nemusel být jinak vůbec žádný problém, používám třídu na práci s databází a určitě by to do ní šlo aplikovat zcela jednoduše.
gaminn
Profil *
No, vždyť o tom vlastně píše Joker.
Karaya1
Profil *
Velice pěkně to vyřesil Jakub Vrána.
juneau
Profil
gaminn "ale kdo používá každý den databázi s jiným kódováním" ... Tam ani tak nejde o každodenní používání ale o to, že ten systém používá cca 100 lidí každý na jiném hostingu a já bych potřeboval univerzální upgrade z jeho databáze v pro mě neznámém stavu na utf8, se kterou bude systém pracovat.

Takže si teď uvědomuju, že je pro mě určitě lepší nárazový převod databáze než vytvoření mezivrstvy. Takže si asi prozkoumám řešení Jakuba Vrány, které jsem měl také v záloze. To bude alchymie :)
24_work
Profil *
OT: co je s p. Vranou, odjel meditovat do Tibetu? Uz delsi dobu jsem u nej nevidel zadny clanek.
Toto téma je uzamčeno. Odpověď nelze zaslat.

0