Теме: Web развој

Веб, PHP, MySQL и српско писмо

Скраћена веза: http://pedja.supurovic.net/veza/5634

Иако је одавно решена подршка коришћења нашег ћириличног и латиничног писма на MySQL серверу, још увек се дешава да ми се млађе колеге јављају са проблемом да им наша слова не раде како треба на сајтовима.

Еву укратко шта треба урадити да би сте могли користити наша слова на сајту:

Најпре, на MySQL серверу, свакој табели и пољу које треба да садржи наша ћирилична или латинична слова треба подесити кодну страну на UTF-8. На пример:

create table `moja_tabela` (
  `id` int auto_increment primary key not null,
  `naziv` varchar(25) character set utf8
  `mesto` varchar(25) character set utf8
) engine=myisam;

Ово командом ће у табели ‘moja_tabela’ пољима ‘naziv’ и ‘mesto’ бити подешено UTF-8 кодирање знакова тако да ће у њих моћи да се уписују и наша ћирилична и латинична слова.

Следеће је да у заглављу HTML стране коју шаљете кориснику нагласите да је садржај кодиран као UTF-8. То ћете постићи тако што ћете у заглавље HTML стране (<head>) ставити команду:

<meta http-equiv="Content-Type"
      content="text/html;
      charset=utf-8">

Тако ће и веб читачи знати да треба да користе UTF-8 знакове приликом приказивања стране али и приликом слања података серверу, уколико попуњавате неки образац или слично.

Битан корак је и да се у PHP приликом успостављања конекције на MySQL сервер нагласи да треба користити UTF-8 кодирање.

Дакле, након што се направи конекција…

$dbc = mysql_pconnect($hostname, $username, $password) or
  die(mysql_error());

… и отвори база …

mysql_select_db($database, $link);

… треба подесити и кодну страну…

mysql_query ("SET NAMES 'utf8' COLLATE 'utf8_unicode_ci'");

Све ово је потребно и довољно да избегнете проблеме са лошим кодирањем наших знакова приликом уписивања, читања и приказивања садржаја базе.


Поделите овај чланак са пријатељима


14 comments to Веб, PHP, MySQL и српско писмо

  • Tapavicki

    Još jedna sitnica pre ispisa (u *.php), čisto da budemo sigurni da je stranica poslata čitaču (browser) kako treba:
    header('Content-Type: text/html; charset=utf-8');
    Preporučujem prvo proveriti server (server config, virtual host):
    AddDefaultCharset On|Off|charset
    pošto je podrazumevano (default):
    AddDefaultCharset Off

    Ako niste voljni ili nemate prava da menjate konfiguraciju Apača onda možete dodati u .htaccess umesto za svaki fajl posebno:
    AddDefaultCharset UTF-8
    ili posebno za ekstenziju:
    AddCharset UTF-8 .html

    Kod otvaranja baze, moja standardna rutina je:

    $query = "SET NAMES 'utf8'";
    $result = mysql_query($query) or die('Error : ' . mysql_error());

    $query = "SET CHARACTER SET utf8";
    $result = mysql_query($query) or die('Error : ' . mysql_error());

    $query = "SET COLLATION_CONNECTION='utf8_general_ci'";
    $result = mysql_query($query) or die('Error : ' . mysql_error());

    To me rešava svih problema sa UTF setom karaktera.

  • Mita

    Svaka čast odličan tekst i pravo rešenje!

  • Banjole

    Hvala Pedja,

    zaista lepo objasnjeno i odradjeno.
    Svaka cast!

  • Milan

    Moj hosting provajder koristi „utf_8_general_ci“ za collation, ima li potreba da prebacujem na „utf_8_unicode_ci“ ako koristim nasu ćirilicu i latinicu, pošto nisam primetio da nešto ne radi kako treba, ovako kako je inicijalno postavljen wordpres od strane provajdera (loopia)…

    Ako bi koristio ruski jezik, jel onda utf_8_unicode_ci pravo rešenje

    • Не би требало да има везе све док се ћирилична слова исправно приказују.

      Води рачуна, овај додатак не пресловљава са руског језика. Пресловиће само она слова која су зајендичка руској и српској ћирилици.

  • Uros

    Pozdrav,da li moze iko da mi pomogne. Pravim bazu za websajt gde moram da upisujem latinicu (srb) i nece da mi cita slova.
    Koristim HeidiSQL i postavio sam „collacion“ da mi bude utf8_unicode_ci kao i opisano ali opet nista ne reagouje…
    Moze mala pomoc?

    • Ово како стоји у упутству треба да ради. Провери да ли си све добро подесио и евентуално да ли SQL сервер, PHP и веб сервер имају инсталирано све што је потребно.

  • Rade

    Možeš li da mi napišeš konačan kod otvaranja baze npr. koja se naziva „prva“ jer nešto mi ne funkcioniše?Hvala.

    • У примеру у чланку замените испред додајте линије којима додељујете вреднсоти променљивама $hostname, $username, $password и то је све.

  • Bobo

    Pozdrav,

    Imam problem da mi aplikacija ne javlja probleme sa cirilicom. Unosi u bazu i cita iz baze ali je problem kada odem u browse u mysql i vidim samo skup raznih simbola. Cijela baza je „utf_8_unicode_ci“ kao i vecina kolona. Da li neko zna kako da ovo rijesim i jos dal je moguce pristupiti lolachost pomocu chrome ili bilo kod drugog browsera sem internet explorera.

    Hvala,
    Bobo

  • Zoran Djordjević

    Svaka čast

    Naravno u HTML-u svakako treba da stoji:

    a ovaj sledeći red sve rešava :
    mysql_query („SET NAMES ‘utf8’ COLLATE ‘utf8_unicode_ci'“);

    Proverio sam. Radi savršeno i sa ćirilicom i sa našim latiničnim slovima. Ceo dan sam potrošio da ovo rešim i na kraju sam našao ovo.

    Hvala na pravoj informaciji

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

Попуните израз тако да буде тачан: *