T&R splet blog o spletnih storitvah. Razgaljamo tehnologijo!

reference spletnih strani
21st August

Stalni UTF-8 problemi – utf8 mysql php – čšž šumniki težave – iskanje znaki – mysql like

Na T&R Splet blogu smo pripravili vrsto vodičov na temo problematike povezane s UTF-8 podporo. Blog iskalnik nam za UTF-8 iskalni niz vrne, kar nekaj rezultatov. Obdelali smo 6 korakov kako do UTF-8 podpore na vaši spletni strani, napisali vodič kako dodati UTF-8 podporo aplikacijam kot je Zen Cart, modulom za Zen Cart kot je Easy Populate, pa tudi tretje PHP module za na primer branje ter kreiranje Excelov, kreiranje PDF-jev, na zadnje pa tudi konverzijo strukture ter podatkov v MySQL bazi v UTF-8 način. Kljub temu se na forumih, kot je php.si, slo-tech ter slojoomla.si najde precej vprašanj povezanih s UTF-8 podporo. Zato sem se odločil še enkrat spisati vodič kako uspešno dodati UTF-8 podporo pri vaši spletni aplikaciji, ki jo poganjata PHP ter MySQL. Enostavno!

Osnovni problem

Večini starejših spletnih strani je dandanes še vedno v CP1250 ali ISO-8859-1 načinu. Zadeva uspešno deluje dokler ne želimo na spletno stran dodati kakšne posebne znake (€ ali kaj podobnega), ki jih te kodne tabele ne podpirajo. Problem nastane tudi, ko želimo na spletno stran dodati več jezikov, naprimer nemški, angleški, slovenski, srbski.

Kdaj potrebujem UTF-8 podporo?

IZKJLJUČNO ko potrebujete znake, ki jih vaša trenutna kodna tabela (CP1250, ISO-8859-1, ISO-8859-2, CP1251, itd..) NE podpira.

Kaj, če ne potrebujem UTF-8 podporo?

Nič, pustite vašo aplikacijo pri miru in se raje posvetite vsebini. Google vas zaradi ne UTF-8 podatkov zagotovo ne bo uvrstil nižje v iskalnih rezultatih. Primer uporabnika, ki je želel UTF-8 podporo, a bil na koncu zadovoljen s CP1250 lahko najdete na php-si forumu.

Kaj potrebujem za uspešno konverzijo spletne strani v UTF-8 način

  • Urejevalnik, ki bo vaše datoteke shranil v UTF-8 načinu brez BOM znaka
  • MySQL bazo s UTF-8 strukturo ter podatki
  • PHP aplikacijo, ki vrača podatke v UTF-8 načinu
  • Nekaj osnovnega znanja – v primeru, da ste čisti začetnik vam tega ne priporočamo

Postopek kako dodati UTF-8 podporo

Urejevalnik

Sam vam priporočam Zend Studio ali Net Beans. Poglejte si sliko kako nastaviti UTF-8 encoding v Zend Studio 5.5a oz. v Net Beansu. Na spletu je moč najti navodila tudi za PHP Designer – shranjevanje v UTF-8 načinu.

Kako se prepričati ali je datoteka shranjena v UTF-8 načinu

[php]
$text = file_get_contents(“vasa_php_datoteka”);
if (preg_match(”/./u”, $text) === false) {
echo ”Datoteka NI shranjena v UTF-8 načinu”;
} else {
echo ”Datoteka JE shranjena v UTF-8 načinu. Pojdite na naslednji korak.”;
}
exit;
[/php]

MySQL baza

Strukturo baze ter podatke morate imeti v UTF-8 načinu. Torej vaša baza, tabele, polja morajo imeti nastavljen UTF8 charset. Če ste prej uporabljali CP1250 imate najverjetneje sedaj nastavljeno charset na latin1. Zadevo je moč enostavno spremeniti, pomagajte si s tem vodičem, kjer najdete PHP kodo za avtomatsko konverzijo baze.

Povezava PHP-ja do MySQL baze

Ker imate vašo bazo v UTF-8 strukturi, morate PHP-ju povedati, da mora vse podatke prenešati v UTF-8 načinu. To storite tako, da na začetku, takoj zatem, ko kreirate povezavo do baze, izvede enostava querya:
[php]
mysql_query(“SET NAMES ”utf8” COLLATE ”utf8_slovenian_ci””);
mysql_query(“SET CHARACTER SET ”utf8_slovenian_ci”;”);
[/php]

Kako se prepričati ali imamo povezavo do MySQL baze v UTF-8 načinu

[mysql]
show variables like ”c%”;
[character_set_client] => utf8
[character_set_connection]=> utf8
[character_set_results] => utf8
[collation_connection] => utf8_slovenian_ci
[/mysql]

PHP aplikacija

Ker imate sedaj bazo ter datoteko v UTF-8 načinu morate tudi vašemu obiskovalcu oz. njegovemu brskalniku povedati, da vaša spletna stran servira UTF-8 podatke. To storite tako, da nastavite HTML meta tag (znotraj head značke):
[html]



[/html]

ali tako, da nastavite header s pomočjo PHP-ja:
[php]
header(”Content-Type: text/html; charset=utf-8”);
[/php]

Kako se prepričati ali brskalnik prepozna našo aplikacijo kot UTF-8

Internet Explorer ali Firefox morata pod View, Endoing kazati UTF-8. Če kažeta drugi encoding potem nekaj NE deluje pravilno.

Uspeh

Po teh korakih bi vaša aplikacija že morala delovati v polnem UTF-8 načinu. V primeru, da imate težave nam to napišite v komentarjih.

Težave:

PHP nizi/datoteke shranjene v ne UTF-8 načinu – pretvorba

Konvertiranje datotek CP1250, UTF-8 – iconv

PHP sortiranje

setlocale (LC_ALL, ”sl_SI.UTF-8”);

PHP delo s UTF-8 stringi oz. nizi

UTF-8 htmlentities, Html_entity_decode, htmlspecialchars

MySQL iskanje

LIKE – MATCH AGAINST

UTF-8 težave na slovenskih forumih

Dodatne informacije

Upam, da bo vodič rešil marsikateremu probleme, ki nastopijo pri pretvorbi spletne aplikacije na UTF-8 način. Predlogi, izboljšave, dodatne informacije ali komentarji so več kot dobrodošli.


Dodaj komentar

You must be logged in to post a comment.