PDA

Pogčedajte punu verziju : Server vs. UTF-8


Milos Vukotic
31. 01. 2006., 13:54
Cao :)
U firmi imamo 'Apache/2.0.54 (Fedora) Server' koji "odbija" da pravilno prikaze stranice sa utf-8 karakterima tj. prikazuje znakove pitanja umjesto nekih slova.
Znam da problem nije u inkriminisanim stranicama tj. siguran sam da je do servera, iako nas BOFH admin tvrdi da nije...
U linux i adminstraciju servera razumijem se koliko i prosjecna plavusa u motore sa unutrasnjim sagorijevanjem... :-|
Sto da kazem covjeku, gdje da gleda & sto da ispravi?

Hvala :)

bluesman
31. 01. 2006., 14:05
Miloše, mislim da server nema veze sa tim. Odnosno, server prikaže ono što mu script servira. Kaži čoveku da pogleda svoj kod, ili ako čita iz mysql, neka pogleda šta je stvarno upisano u bazu.

dinke
31. 01. 2006., 14:25
Pogledaj "default charset" podešavanje u httpd.conf fajlu. Mogu se kladiti da je setovano na ISO-8859-1.
#
# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
AddDefaultCharset ISO-8859-1
Komentuj tu liniju, i problem će biti rešen.

Radi se o tome da apache na osnovu ove direktive overriduje charset koji je definisan u meta tagu html dokumenta. Ako ti je recimo u html-u definisan charset na utf-8, a view->character encoding opcija u FF-u prikazuje neki drugi, onda je to siguran znak da imas problem čije sam rešavanje opisao gore.

Milos Vukotic
31. 01. 2006., 15:19
Bluesman, who's side you're on!? :)

Problem je isti bez obzira radi li se o prostoj html stranici ili skriptu koji dovlaci podatke iz baze. Dalje, kad istu stranicu upload-ujem na neki drugi server, problema nema, tako da...
Mora biti da je ovo sto Dinke kaze (hvala, Dinke!), djeluje tako, ali i BOFH i ja smo posli kucama, tako da cemo na odgovor cekati makar do sjutra ujutro. :)

dinke
31. 01. 2006., 15:33
OT:siguran sam da je do servera, iako nas BOFH admin tvrdi da nije...
hehe, htedoh (uz rizik da ispadnem glup u drustvu) da priupitam wft is BOFH ali srecom izmislise ljudi google :)

http://en.wikipedia.org/wiki/BOFH
The Bastard Operator From Hell (BOFH), a fictional character created by Simon Travaglia, is a rogue system administrator who takes out his anger on lusers (his colleagues, bosses and anyone who gets in his way).

The BOFH stories were originally posted to Usenet by Travaglia, with some being reprinted in Datamation. They were published weekly from 1995 to 1999 in Network Week and from 2000 they have been published every few weeks in The Register. They were also published in PC Plus magazine for a short time, and several books of the stories have also been released.

Vodi racuna da ne upucujes admina na forum ;)

bluesman
31. 01. 2006., 15:48
Pogledaj "default charset" podešavanje u httpd.conf fajlu. Mogu se kladiti da je setovano na ISO-8859-1.
#
# Specify a default charset for all pages sent out. This is
# always a good idea and opens the door for future internationalisation
# of your web site, should you ever want it. Specifying it as
# a default does little harm; as the standard dictates that a page
# is in iso-8859-1 (latin1) unless specified otherwise i.e. you
# are merely stating the obvious. There are also some security
# reasons in browsers, related to javascript and URL parsing
# which encourage you to always set a default char set.
#
AddDefaultCharset ISO-8859-1 Komentuj tu liniju, i problem će biti rešen.

Radi se o tome da apache na osnovu ove direktive overriduje charset koji je definisan u meta tagu html dokumenta. Ako ti je recimo u html-u definisan charset na utf-8, a view->character encoding opcija u FF-u prikazuje neki drugi, onda je to siguran znak da imas problem čije sam rešavanje opisao gore.

Dinke, kako si uspeo ti ovo ovako da protumačiš? :)

Default character set se koristi kada nije definisan character set. Ako je čovek stavio UTF-8 na stranu, misliš da će apache default character set da mu overriduje setovanje?

Po defaultu dolazi prekonfigurisan isključen.

@milose: ja sam uvek na strani develipera, naročito kada su u pravu :)

Milos Vukotic
31. 01. 2006., 16:19
Dinke, mislim da bi svaki admin shvatio to kao kompliment :)

Gorane, uporno govorim da se ista stranica svuda prikazuje kako treba, osim na tom serveru, tako da mora biti da sam u pravu. Takođe, pošto sam ja 'razvio' te skriptove, biće da sam i nekakav developer u ovom slučaju. :)

Mislio sam da je ovo dovoljno jasno da ne bude zabune glede charset-a:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
...ipak, očito da nije. U svakom slučaju, odgovor ćemo dobiti tek ujutru.

dinke
31. 01. 2006., 16:28
Dinke, kako si uspeo ti ovo ovako da protumačiš? :)

Default character set se koristi kada nije definisan character set. Ako je čovek stavio UTF-8 na stranu, misliš da će apache default character set da mu overriduje setovanje?
Da. Apache će uvek isporučiti (overridovati) charset bez obzira šta je u meta tagu. Apsolutno sam 100% siguran u to, mogu šta više da ti iskopam par topic-a na tu temu, a i sam sam svojevremeno imao taj problem.

[Edit]
Evo ipak jednog topica na es-u, mrzi me da kopam dalje :)
http://www.elitesecurity.org/tema/117075

Po defaultu dolazi prekonfigurisan isključen.
Hmmm, za ovo nisam siguran, mislim da zavisi od distribucije.

Pedja
31. 01. 2006., 17:00
Moguda dodam, da kad god sam imao problema sa prikazivanjem UTF-8, cesto je resenje bilo da za default charset postavim UTF-8. Sta god drugo da stoji, muke i problemi, bez obzira sta ja poslao u zaglavlju dokumenta.

Petar Marić
31. 01. 2006., 17:20
Blues, upravo sam instalirao Apache 2.0.52 na virtuelnu mašinu i kao što vidiš AddDefaultCharset opcija je aktivna nakon instalacije
#izvod iz httpd.conf
#...
AddDefaultCharset ISO-8859-1
#... O istom trošku proverio i da response-header charset override-uje meta-tag.
A ako pogledaš HTML4 specifikaciju (http://www.w3.org/TR/html4/charset.html#h-5.2.2) uočićeš ovaj deo:
To sum up, conforming user agents must observe the following priorities when determining a document's character encoding (from highest priority to lowest):
An HTTP "charset" parameter in a "Content-Type" field.
A META (http://www.w3.org/TR/html4/struct/global.html#edef-META) declaration with "http-equiv" set to "Content-Type" and a value set for "charset".
The charset (http://www.w3.org/TR/html4/struct/links.html#adef-charset) attribute set on an element that designates an external resource.

noviKorisnik
31. 01. 2006., 17:56
http://httpd.apache.org/docs/2.0/mod/core.html#adddefaultcharset

E sad, zašto je ovo ponekad uključeno, nemam pojma. Istina je da zna da zada velike muke. Lek je tarabica ispred ...

oliver
01. 02. 2006., 06:58
Ajd da i ja malo osinem po prasini:

Default charset je bio ukljucen u nekoliko verzija Apache-a koje sam koristio do sada (tacnije, nikad ga nisam zatekao iskljucenog :)), i da, override-ovao je charset koji je naveden u META tagu svaki put :)

Nakon instalacije, slicno promjeni DocumentRoot-a, rutinski zadatak je taraba ispred defaul charseta.

Ej, je l' ono blusman rastura neki hosting? :p :)

Milos Vukotic
01. 02. 2006., 08:27
Tarabica je riješila problem :)

Hvala!

bluesman
01. 02. 2006., 11:16
Ej, je l' ono blusman rastura neki hosting? :p :)

Ako je ovo bilo zajednjivo, kao što mislim da jeste, bluesman ima profesionalca koji brine o tim stvarima, ja sam govorio iz svog iskustva i primenio sam "zdravu logiku". Ako se nešto zove default, onda bi trebalo da znači da će to da se upotrebi ako nije drugačije definisano. Ali očigledno logika nema uvek veze sa činjenicama.

dinke
01. 02. 2006., 13:12
Ako je ovo bilo zajednjivo, kao što mislim da jeste, bluesman ima profesionalca koji brine o tim stvarima, ja sam govorio iz svog iskustva i primenio sam "zdravu logiku". Ako se nešto zove default, onda bi trebalo da znači da će to da se upotrebi ako nije drugačije definisano. Ali očigledno logika nema uvek veze sa činjenicama.
Slažem se sa Blues-om. I ja bih isto pomislio čitajući komentar koji ide uz pomenuti flag u httpd.conf file-u ali ranije (pre 2 godine) sam i sam imao isti problem pa sam tako odmah znao šta je i ovde problem. Iskustvo, šta ćeš :)

Anyway, ovaj forum služi za rešavanje problema i sticanje novih znanja i iskustava. Niko od nas ne zna apsolutno sve, tako da ću ubuduće zajedljive komentare poput Oliverovog brisati po kratkom postupku.

oliver
01. 02. 2006., 18:56
...kao što mislim da jeste...

a nije.

zaboravio sam dodati NHF, sad nema veze, brisite ako vam je toliki cejf. izvinjavam se sto sam nehotice zadro u prefesionalnost bluesman-a ili tamo nekog gurua. ne znam samo cemu onda smajliji sluze. al' 'ajd'...

pa-pa.

bluesman
01. 02. 2006., 20:35
Ne znam što se ljutiš, prozvao si me, odgovorio sam ti više nego kulturno: "bluesman ima profesionalca koji brine o tim stvarima", al' ajd'...

Goran Aničić
01. 02. 2006., 23:19
Kada smo već kod servera i kodnih rasporeda evo još malo podataka iz analize u PC magazinu #21. Vrlo zanimljivi podaci za .co.yu domen:



Oko 24% sajtova koristi "windows-1250" kodni raspored,
oko 21% "iso-8859-1",
oko 9% "windows-1252".

Nijedan od njih nije preporučeni način za prikaz naših slova, a u nekima nije ni moguć takav prikaz. Za centralnu Evropu, pa i nas,
standard je "iso-8859-2", koji je zastupljen sa tek malo manje od 6%.
Druga preporuka je "utf-8", koji je zastupljen sa malo manje od 5%, i sa kojim se može prikazati i ćirilica.

bluesman
01. 02. 2006., 23:22
Mislim da je to najviše zbog IE i windows, kao i "generator Front Page". Sa UTF ljudi imaju previše problema, dok sa windows-1250 sve radi iz prve (naravno samo na windows)