Иако је одавно решена подршка коришћења нашег ћириличног и латиничног писма на 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'");
Све ово је потребно и довољно да избегнете проблеме са лошим кодирањем наших знакова приликом уписивања, читања и приказивања садржаја базе.
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.
Ово што сам дао у чланку је сасвим довољно.
Svaka čast odličan tekst i pravo rešenje!
Hvala Pedja,
zaista lepo objasnjeno i odradjeno.
Svaka cast!
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
Не би требало да има везе све док се ћирилична слова исправно приказују.
Води рачуна, овај додатак не пресловљава са руског језика. Пресловиће само она слова која су зајендичка руској и српској ћирилици.
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 и веб сервер имају инсталирано све што је потребно.
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 и то је све.
Hvala
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
Вероватно програм којим прегледаш базу није добро подешен за УТФ8. Пробај програмом HeidiSQL.
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