• 16 odgovora
  • 4.757 pregleda
UTF-8 enkodiranje PROBLEM 15.09.2008. u 22:36 · pre 220 meseci #1
Napravio sam jedan sajt, koji kod mene na localhost-u radio super, i kad sam ga upload-ovao na jos jedan besplatni server radio je lepo. ali problemje nastao kad sam ga konacno okacio na server na koji je trebao da bude...

Problem je u tome sto se tekstu ne prikazuju naša slova (š,đ,ž....), sve stranice imaju meta tag.
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
Kao Content managment sistem koristim cutenews skriptu.
Isti problem se javlja i sa forumom koji je takodje lepo radio...., pojavljuju se na sve strane ?? cak i izmedju brojeva, sto ne bih rekao da je problem u enkodingu.

P.S. Sajt je upload-ovan na univerzitetskom serveru, a i njihov sjt ima slicnih problema, pa me zanima da li je mozda problem u serveru, I kako moze da se resi!?
Hvala!...
Re: UTF-8 enkodiranje PROBLEM 16.09.2008. u 09:59 · pre 220 meseci #3
Imao sam slichan problem sa mojim sajtom, tachnije, sve tekstove koje sam dovlachio iz baze, a koji su sadrzhali č, š, ž, itd, ta ista slova su zamenjivana sa znakom '?'. Problem sam reshio tako shto sam na mestu konekcije sa bazom, odmah posle linije koda za konektovanje slao upit bazi: SET NAMES UTF8. Npr. ovako:
Code:

$konekcija = new mysqli('localhost', 'username', 'password', 'baza'); 
$konekcija->query('SET NAMES UTF8');

Re: UTF-8 enkodiranje PROBLEM 16.09.2008. u 11:32 · pre 220 meseci #5
Skripta koju koristim kao CMS koristi tekstualni fajl kao bazu.....
A na forumu se pojavljuju ? i tamo gde nema teksta vec i izmenju slika i brojeva....
Re: UTF-8 enkodiranje PROBLEM 17.09.2008. u 13:08 · pre 220 meseci #7
Ma jok ne pomaze...

E sad ,tek sto mi nije nista jasno :(

Kad sam na mom kompu u httpd.config postavio AddDefaultCharset UTF-8 sve je pocelo da brljavi kao i sajt koji se nalazi na fakultetskom serveru
E sad ja sam mislio da je u tome problem pa smo probali da tamo to promenimo, ali bilo koja promena i (AddDefaultCharset UTF-8, AddDefaultCharset off, AddDefaultCharset Windows-1250, pa cak i brisanje cele linije) nije urodilo plodom

Jednostavno se ne desavaju nikakve promene

Sta tu moze da bude..........?

P.S
Stim sto se AddDefaultCharset- na serveru fakulteta ne nalazi u httpd.config vec u tao nekom drugom (config.mime-tako nesto), verovatno sto je moj za win, a taj za linux, tako nekako.....
Re: UTF-8 enkodiranje PROBLEM 18.09.2008. u 13:56 · pre 220 meseci #8
REŠEN PROBLEM! :)

For a je bila u tome sto je u php.ini fajlu bilo definisano “default_charset UTF-8”
Izbacio sam tu komandu (komentarisao je ;) i sve je proradilo kako treba, tako da ako neko ima sličnih problema nek pogleda php.ini fajl u PHP-u.

Hvala svima na pomoći!!!
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 17:18 · pre 220 meseci #9
Ako može i meni pomoć.

da li postoji način pomoću php-a ili mysql-a da se izvuku podaci iz baze u
utf-8 encodingu, a koji su upisani u bazu u win-1250 encodingu.
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 17:49 · pre 220 meseci #10
Kad "dovuchesh" taj tekst iz baze npr. u neku promenljuvu $tekst, konverziju posle odradish ovako:
Code:

$tekst = mb_convert_encoding($tekst, "UTF-8", "win-1250");
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 18:36 · pre 220 meseci #11
Pokušao sam navedeno napraviti, ali mi javlja grešku :
Illegal character encoding specified in....
slova sa kvačicama su izbačena, niti se ne prikazuju. Pokušao sam promijeniti ovako:
Code:
$Rec_OPIS = mb_convert_encoding($Rec_OPIS, "UTF-8", "latin2");

i s time sam dobio neka slova, neka ne (č radi, ž ne radi) i ne javlja se greška.

hm, što sad stavit umjesto latin2, latin1 ne pomaže.

Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 18:46 · pre 220 meseci #12
Taj poslednji parametar je opcioni, tako da tu ne morash da napishesh nishta. Ako ni to ne pomogne onda ipak probaj da mu prosledish i taj treci parametar, ali neka to bude ovako neshto:
Code:

$tekst = mb_convert_encoding($tekst, "UTF-8", "JIS, eucjp-win, sjis-win");

Ako ni to ne pomogne, probaj ovako:
Code:

$tekst = mb_convert_encoding($tekst, "UTF-8", "auto");

A ako ni to ne uspe, smislicemo josh neshto... :)
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 18:50 · pre 220 meseci #13
btw Sad mi pade napamet, probaj josh i ovo:
Code:

$tekst = mb_convert_encoding($tekst, "UTF-8", "ISO-8859-2");

Chini mi se da je upravo ISO-8859-2 najslichniji tom win-1250 encoding-u, pa mozhda uspe...
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 19:26 · pre 220 meseci #14
Probao sam sve navedeno, ali ništa ne pomaže, iso-8859-2 radi za č, ž ne radi :(

Možda sam krivo lokalizirao problem, možda je problem u nečem drugom. Evo o čemu se radi.
Stranica je napravljena da se koristi UTF-8 encoding, a unutar te stranice se trebaju prikazati podaci iz druge baze. Kada se prikažu podaci iz druge stranice pojavljuju se čudni znakovi koji se vide normalno jedino ako se u firefoxu promijeni encoding u win-1250, ali onda ostali dio stranice ne vredi. Pretpostavljam da su podaci u drugoj bazi u win-1250 encodingu.
Preko phpmyadmina kad pogledam tu drugu bazu, onda mi piše da su podaci koje povlačim u latin1_swedish_ci (collation).

Sada više ne znam da li su podaci win-1250 ili latin1_swedish_ci, ali da ih pretvorim u utf-8 neće pa neće :(

Pretpostavljam da su podaci upisani u tablicu u win-1250 encodingu, Collation na tablici je latin1_swedish_ci.
Definitivno više ne znam što je pravo a što krivo.
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 20:21 · pre 220 meseci #15
Ne znam, probaj josh neshto i sa ovim funkcijama:
Code:

$tekst = iconv("ISO-8859-2", "UTF-8", $tekst);
//ili 
$tekst = iconv("windows-1250", "UTF-8", $tekst);

$tekst = utf8_encode($tekst);

A probaj opet i onu prvu f-ju (mb_convert_encoding), ali joj kao treci parametar prosledi "windows-1250"...

Takodje, probaj i u phpMyAdmin-u da promenish encoding te baze:
Code:

ALTER DATABASE baza DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
Re: UTF-8 enkodiranje PROBLEM 20.09.2008. u 20:53 · pre 220 meseci #16
E ovako, kao prvo hvala na pomoći, proradilo je.
E sad kako, pa krenimo redom.

1. mb_convert_encoding nažalost ne radi sa slovima encodinga win-1250, ali zato radi sa ISO-8859-2.
iconv radi sa win-1250 slovima, pa sam probao direktno iz win-1250 u utf-8 pa nije radilo, ali zato radi iz win-1250 u ISO-8859-2.

2. Znači,
--> najprije iz win-1250 u ISO-8859-2 pomoću iconv
--> potom iz ISO-8859-2 u utf-8 pomoću mb_convert_encoding

Code:

$tempout = iconv("windows-1250", "ISO-8859-2", $zapis);
$zapis = mb_convert_encoding($tempout, "UTF-8", "ISO-8859-2");
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme