Diskuze: Převod webu do UTF8

PHP PHP Převod webu do UTF8 American English version English version

Avatar
David Čápka
Tým ITnetwork
Avatar
David Čápka:

Blížíme se k bodu, kdy bude web relativně odladěný po převodu na MVC architekturu. V dalším kroku bychom rádi přešli na kódování UTF-8.

Jsou zde 3 problémy:

MySQL databáze - lze ji nějak jednoduše převést? Co jsem četl, tak pokud je správně nakódována (což v našem případě je), mělo by stačit jen změnit kódování tabulek. Má s tím někdo zkušenosti? nevím jestli to jde takhle jednoduše nebo se musí třeba převést do binary a až poté do utf.

PHP, JS a další soubory - Víte o něčem, co by je umělo hromadně překódovat, abychom se neuklikali k smrti?

PHP funkce - Jaké jsou problémové funkce? Bude třeba nahradit fce pro manipulace s řetězci těmi s prefixem mb_. Je ještě nějaké úskalí?

Děkuji za odpovědi :)

Odpovědět 24.8.2012 13:32
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na David Čápka
David Čápka:

Vypadá to, že MySQL již máme v UTFku :)

K formátu souborů, s BOM nebo bez BOM? Často se nám stávalo, že byl soubor pro PHP nečitelný kvůli nějakým neviditelným znakům. To dělala ta verze s BOM. Kit, poradíš prosím?

Nahoru Odpovědět 24.8.2012 14:20
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Formát souborů určitě bez BOM. Dělá to problémy hlavně u includů.

Pro hromadné překódování používám recode nebo také iconv. Umí to i PHP, tak ho k tomu můžeš využít.

Záleží na tom, které funkce s řetězci používáš. Většinou není potřeba měnit nic, protože všechny řetězce bývají v databázi a manipulací se moc nedělá.

Nahoru Odpovědět 24.8.2012 14:27
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Díky. S těmi funkcemi mám na mysli hlvně věci jako strlen, substr a podobné.

Nahoru Odpovědět 24.8.2012 14:31
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Jasně. U těch je náhrada nutná. Jen se jejich použití vyhýbám jak jen to jde.

Nahoru Odpovědět 24.8.2012 14:36
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Tak máme převedenou databázi i soubory. Nyní se hrabeme ve funkcích.

mb_internal_encoding

Stačí uvést jen jednou v indexu, je to tak? Doufám, že ne v každém souboru.

Nenašel jsem alternativy funkcí implode, explode a str_replace. Ty jsou UTF-8 safe?

Jsem velmi zklamán dokumentací v této oblasti a nečekal bych, že toho o nejpoužívanějším kódování najdu tak málo.

Nahoru Odpovědět 24.8.2012 16:56
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Nevím, mb_internal_en­coding() jsem nikdy nepoužil, používám UTF-8 a nikdy mi to nechybělo.

implode(), explode() a str_replace() by měly být UTF-8 safe.

Zřejmě není víc dokumentace zapotřebí.

Nahoru Odpovědět 24.8.2012 19:47
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

Bez mb_internal_en­coding() jsem měl nekorektní výstup mb_substr.

To si nemyslím, našel jsem dost dotazů v různých fórech a chabé odpovědi. Dokonce jsem našel i několik pokusů o vlastní str_replace, protože někdo evidentně nevěděl, že je utf8-safe (tedy pokud je, doufám, že ano). Čekal bych seznam funkcí, co nejsou utf8-safe. Takový jsem však nenašel a patrně ani neexistuje.

Nahoru Odpovědět 24.8.2012 20:09
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Aha, funkce mb_* jsem nikdy nepoužil, proto mi mb_internal_en­coding() nikdy nechybělo. Asi pracuji jen s normalizovanými daty.

Nahoru Odpovědět 24.8.2012 20:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Kit
David Čápka:

To je divné, to jsi nikdy nepracoval s diakritikou? Ono tohle je možná důvod, proč je o tom tak málo materiálů, protože to řeší hlavně ty národy, co mají tu smůlu a mají takhle blbou abecedu. V anglicky mluvících zemích si toho třeba ani nikdo nevšimne.

Nahoru Odpovědět 24.8.2012 20:24
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:

Diakritiku normálně používám, ale nebyl jsem nucen český text parsovat nebo jinak upravovat. Vždy to za mne udělala nějaká hotová funkce tak, že jsem se o to nemusel starat.

Nahoru Odpovědět 24.8.2012 20:37
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 11 zpráv z 11.