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:
  1. $text = file_get_contents("vasa_php_datoteka");
  2. if (preg_match(''/./u'', $text) === false) {
  3.    echo ''Datoteka NI shranjena v UTF-8 načinu'';
  4. } else {
  5.    echo ''Datoteka JE shranjena v UTF-8 načinu. Pojdite na naslednji korak.'';
  6. }

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:
  1. mysql_query("SET NAMES ''utf8'' COLLATE ''utf8_slovenian_ci''");
  2. mysql_query("SET CHARACTER SET ''utf8_slovenian_ci'';");

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

MySQL:
  1. SHOW variables like ''c%'';
  2. [character_set_client] => utf8
  3. [character_set_connection]=> utf8
  4. [character_set_results] => utf8
  5. [collation_connection] => utf8_slovenian_ci

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:
  1.    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
  2. </head>

ali tako, da nastavite header s pomočjo PHP-ja:

PHP:
  1. header(''Content-Type: text/html; charset=utf-8'');

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.

Deli s skupnostjo:

  • Print
  • Digg
  • Sphinn
  • del.icio.us
  • Facebook
  • Mixx
  • Google Bookmarks

Podobni članki:

  1. Šumniki – UTF-8 – Težave – PHP & MySQL
  2. Konverzija CP1250, ISO-8859-1 baze v UTF-8 – šumniki UTF-8 – cp1250 to utf8
  3. PHP – delo z UTF-8 stringi oz. podatki – težave s šumniki (č,š,ž)
  4. Zend Search Lucene – UTF8 podpora – iconv težave
  5. Pretvorba PHP MySQL aplikacije v PHP MS SQL aplikacijo (apache, php, mdb2, mysql => iis, php, mdb2, mssql)
  6. MySQL iskanje LIKE vs FULL-TEXT
  7. Rezanje teksta po koncu besede – php funkcija – substr – cut text – UTF-8
  8. Windows – lokalni MySQL uvoz podatkovne baze – velika podatkovna baza – težave pri uvozu velikih MySQL baz
  9. PHP – Zen Cart – Easy Populate – UTF8 podpora – UTF8 support
  10. Zen Cart – UTF-8 podpora – pretvorba

Dodaj komentar