Apache : magyar ékezetes karakterek megjelenítése ?

Fórumok

Helló mindenkinek !

Hogy lehet azt beállítani az apacheban, hogy megjelenítse a magyar ékezetes betűket is ?
Valamint apache 2.0-ban hol lehet beállítani hogy inetd-n keresztül fusson ? Nem találtam a ServerType direktívát egyik configfile-ban sem.
Jelenleg apache 1.3.9-es verzió van a gépemen.

Hozzászólások

Valamint apache 2.0-ban hol lehet beállítani hogy inetd-n keresztül fusson ?

Ennek semmi értelmét nem látom. Felejtsd is el szerintem.

Hogy lehet azt beállítani az apacheban, hogy megjelenítse a magyar ékezetes betűket is ?

AddDefaultCharset direktívát nézd!
http://httpd.apache.org/docs/2.0/mod/core.html

Apache nem jelenít meg semmit, apache csak egy webszerver. Ami megjelenít az a kliens, de hívják még webböngészőnek is. :)

Egyébként valószínűleg az "AddDefaultCharset iso-8859-2" opció lesz a barátod.
Apache 2.0-ban már nincs ServerType. Mi kényszerít rá, hogy inetd-n akarod futtatni?
Apache 1.3.9 nem túl régi egy kicsit? Tán még remote exploit is van benne...

Apache nem jelenít meg semmit, apache csak egy webszerver. Ami megjelenít az a kliens, de hívják még webböngészőnek is. :) ---> Ez tényleg így igaz, de azért így is értetted a kérdést...
Mindjárt megnézem ezt az AddDefaultCharset-et !
Addig is köszi !

Hát AddDefaultCharset-et nem találtam, de a httpd.conf-ban találtam ehhez hasonlót (de ezzel sem megy) :

# AddLanguage allows you to specify the language of a document. You can
# then use content negotiation to give a browser a file in a language
# it can understand. Note that the suffix does not have to be the same
# as the language keyword --- those with documents in Polish (whose
# net-standard language code is pl) may wish to use "AddLanguage pl .po"
# to avoid the ambiguity with the common suffix for perl scripts.
#
AddLanguage en .en
AddLanguage fr .fr
AddLanguage de .de
AddLanguage da .da
AddLanguage el .el
AddLanguage it .it
AddLanguage hu .hu

#
# LanguagePriority allows you to give precedence to some languages
# in case of a tie during content negotiation.
# Just list the languages in decreasing order of preference.
#
LanguagePriority hu en fr de

Az AddLanguage arra jó (asszem), hogy a szerver automatikusan a böngésző kliens nyelvi verziójának megfelelő lapot ad vissza. Ilyenkor pl. ha az látja, hogy a kliens magyar nyelvű, akkor pl. a .hu kiterjesztésű oldalt olvassa be neki, ha angol akkor a .en -t, stb. Egyébként az általad beidézett konfig részlet kommentjében is ezt írja.

Attól, hogy nincs benne AddDefaultCharset, még beleteheted.

Hát én megpróbáltam, de ezt dobta vissza :

./apachectl configtest
Syntax error on line 657 of /usr/local/apache/conf/httpd.conf:
Invalid command 'AddDefaultCharset', perhaps mis-spelled or defined by a module not included in the server configuration

Ez így ilyen formában nem nyert..sajna !

Akkor szerintem visszatérek az Apache2.0-hoz, csak nagyon sok config file van benne és azért próbálkoztam egy régebbi verzióval. Azt hittem az jobban átlátható .
Meg nem nagyon találtam a 2.0-hoz magyar nyelvű leírást (csak most ismerkedek a HTTP illetve az FTP szerverrel linux alatt).
Egyébként mit jelent pontosan a "remote exploit" ?

Köszi az eddigieket akkor majd újratelepülök :) !!

Nem akartam ezért újat nyitni, mert van idevágó kérdésem.

Szóval van egy Fedora C5 alatti apache 2.2.x szerverem, aminek ez a jelenlegi AddDefaultCharSet=ISO-8859-2 paramétere.

A kérdéses weboldalnak ez van a fejlécében: meta http-equiv="Content-Type" content="text/html; charset=utf-8"

Mégis a Linuxon futó Firefox 2.0 iso-8859-2-ben jeleníti meg a lapot, természetesen baromi rondán :-(

Mit tehetnék, hogy megjavuljon a dolog?

Előre is köszi a segítséget!
--
by Mikul@s

Igen, a HTTP fejlécben lévő kódolás felül szokta írni a HTML doksiban lévőt.

Megteheted szerveroldalon, hogy

    * az adott weboldalra / site-ra definiálsz lokálisan AddDefaultCharSet=utf-8 .htaccess-be vagy a konfigurációban az adott Location-re / Directory-ra,
    * vagy hozzárendeled pl. a .html fájlokhoz a megfelelő kódlapot AddCharset .html utf-8;

Esetleg átállítod / átírod a klienst, hogy a HTML meta fejléceknek higgyen.

"Esetleg átállítod / átírod a klienst, hogy a HTML meta fejléceknek higgyen."
az ötlet jó, de nem csak én szeretném nézegetni a saját weblapomat...

"Igen, a HTTP fejlécben lévő kódolás felül szokta írni a HTML doksiban lévőt."
miért erősebb a szerver beállítása, mint a weblapé? ezzel a logikával csak egyfajta kódolású html-t tehetek egy szerverre?

--
by Mikul@s

Második kérdésedre: én sem értem, és kifejezetten hülyeségnek tartom, sőt, szerintem határozottan egy tervezési hibáról van szó. A html-ben megemlített karakterkészletnek kellene az erősebbnek lennie.

De ne csüggedjünk, ettől még nem olyan drámai a helyzet. Ugyanis:

- A szervert simán be lehet állítani, hogy ne nevezzen meg semmilyen karakterkészletet, ilyenkor a html fájlban említett lesz a mérvadó. (Bár ne feledjük, hogy sima txt fájlok, könyvtárlisták stb. esetén is fontos a megfelelő karakterkészlet megnevezése, és ilyenkor csak a HTTP fejlécben van erre lehetőség.)

- A szerver által megnevezett karakterkészlet könyvtáranként más és más lehet (akár globális konfigban megadva, akár az adott könyvtárban elhelyezett .htaccess fájl segítségével), sőt akár kiterjesztésenként vagy fájlonként egyénileg is megadható más és más.

- Azt hiszem, olyat is tud az apache (talán valami modult aktiválni kell hozzá), hogy ha valaki a "fájlnév" nevű fájlt kéri, de csak "fájlnév.karakterkészlet" nevű van, akkor azt adja oda, a kiterjesztésben megnevezett karakterkészletet megjelölve.

- Létezik egy olyan kódolás, nevezetesen az UTF-8, ami tartalmazza minden élő nyelv minden karakterét, minden böngésző támogatja, és manapság az alkalmazások 99%-a is jól kezeli. Nem látok semmi érvet arra vonatkozóan, hogy miért ne állhatna egy szerveren minden fájl UTF-8 ékezetkódolásban. Az egyszeri átállás persze igényelhet némi melót, de onnan kezdve sokkal egyszerűbb az élet.

"Létezik egy olyan kódolás, nevezetesen az UTF-8, ami tartalmazza minden élő nyelv minden karakterét, minden böngésző támogatja, és manapság az alkalmazások 99%-a is jól kezeli. Nem látok semmi érvet arra vonatkozóan, hogy miért ne állhatna egy szerveren minden fájl UTF-8 ékezetkódolásban. Az egyszeri átállás persze igényelhet némi melót, de onnan kezdve sokkal egyszerűbb az élet."

pont ezaz, hogy az összes nem mostanság készült weblapom iso-8859-1 ill 2-ben van :-(

"- A szervert simán be lehet állítani, hogy ne nevezzen meg semmilyen karakterkészletet, ilyenkor a html fájlban említett lesz a mérvadó. (Bár ne feledjük, hogy sima txt fájlok, könyvtárlisták stb. esetén is fontos a megfelelő karakterkészlet megnevezése, és ilyenkor csak a HTTP fejlécben van erre lehetőség.)"

ez bejött, könyvtárakat meg nem szoktam kiajánlani, legfeljebb oda teszek majd .htaccest

köszi!

--
by Mikul@s

> pont ezaz, hogy az összes nem mostanság készült weblapom iso-8859-1 ill 2-ben van :-(

Attól még át lehet őket alakítani, nem? :-) Vagy előírás, hogy a megjelenést nem befolyásoló belső technikai részleteknek is változatlanoknak kell maradniuk? Én is átestem azon, hogy egyszer mindenféle szövegfájlomat, html oldalamat stb. átalakítottam, és a rendszert is átállítottam utf8-ra. Azóta könnyebb, nem kell kapcsolgatnom kétféle kódolás között ha pl. *.desktop fájlt szerkesztek, bármikor bármilyen speciális karaktert gondolkodás nélkül használni tudok stb...

át lehet, és idővel át is fogom, a céges lapokról van szó, a sajátom régóta utf-8-as

az a baj, hogy rengeteg programból generált weblapunk van, és ugye winfoséknál ezt sem lehet szabályozni, a mai napig iso-8859-1-be dolgozik a kicsike :-)
tudom, cseréljek progit, meg oprendszert :-) folyamatban van az UHU-sítás...

--
by Mikul@s

Ha runtime köpi ki a progi a lapot (cgi, php, asp...), akkor úgyis ő készíti el a HTTP fejlécet is, tehát az apache konfigja nem számít. Ha fájlrendszerre rakja le a statikus oldalakat, amiket az apache majd kiszolgál, akkor megoldás lehet esetleg a generáló progi mögé rakni egy egyszerű iconv-ot.

----------------------------------------------------------------
"Értem én hogy villanymotor, de mi hajtja!?

Azért egyetlen egyszer beleolvashatnál a konfig direktívákba és amikor már aztán tényleg, de tényleg nem találsz semmit sem ahhoz ami érdekel, hát akkor itt is feldobhatod a témát. Még nagyobb probléma, hogy a "hogyan működik egy webszerver?" és a "mi a különbség a kliens oldal és a szerver oldal között?" témákat először tisztázni kell magadban.
Pl: vagyok olyan csacska, hogy utf-8-ban szerkesztem meg a html-t és bátran beleírok egy é-t vagy ű-t és nem akutokat vagy utf kódokat. Na ezek után aranyosan beírom a metába, hogy latin2 legyen az oldal kódolása. Ezek után felpakolom a szerverre, amire előrelátásból, csak a latin1 locale-t telepítettem föl és semmi mást. Így elképzelheted, hogy az utf8-as kódolású állományomat hogy tudja megjeleníteni. Miközben a kliens oldalon vadul próbálja autómatice latin2-re rávenni a megjelenítést. Na ezek után mit kell tenni?
A legtöbb rprobléma abból adódik, hogy az ember lusta dokumentációt olvasni. pedig így megmenekülhet az ember attól, hogy három napig próbáljon egy rpm-et csináli (mentségemre legyen mondva én csak a deb-et ismerem), aztán a harmadik napon egy man rpm-build-et kiad és fél perc alatt megolja a problémát.
Csilivili GUI-t meg csinálhatsz magadnak, ha akarsz, de a finomhangolásra akkor keresztet vethetsz, vagy olyan szörny születik belőle, ami helyett a végén kiadod a vi httpd.conf parancsot. :)

Egyébbként bocs ha megbántottalak volna, de ma húztak fel, mivel a fejlesztők nálunk egy elrontott javascriptes kód miatt követelik a webszerver újraindítását. És ezért ők még pénzt is kapnak. :)

#
# Commonly used filename extensions to character sets. You probably
# want to avoid clashes with the language extensions, unless you
# are good at carefully testing your setup after each change.
# See http://www.iana.org/assignments/character-sets for the
# official list of charset names and their respective RFCs.
#
AddCharset ISO-646-HU .hu
AddCharset ISO-8859-1 .iso8859-1 .latin1
AddCharset ISO-8859-2 .iso8859-2 .latin2 .cen
AddCharset ISO-8859-3 .iso8859-3 .latin3
AddCharset ISO-8859-4 .iso8859-4 .latin4
AddCharset ISO-8859-5 .iso8859-5 .latin5 .cyr .iso-ru
AddCharset ISO-8859-6 .iso8859-6 .latin6 .arb
AddCharset ISO-8859-7 .iso8859-7 .latin7 .grk
AddCharset ISO-8859-8 .iso8859-8 .latin8 .heb
AddCharset ISO-8859-9 .iso8859-9 .latin9 .trk

Szétnéztem a iana.org-on és ezt találtam :

Name: MSZ_7795.3 [RFC1345,KXS2]
MIBenum: 62
Source: ECMA registry
Alias: iso-ir-86
Alias: ISO646-HU
Alias: hu
Alias: csISO86Hungarian

Ezekután beillesztettem ezt a sort a config-ba :
AddCharset ISO-646-HU .hu
ahogy ez fentebb látszik is, de nem jártam sikerrel...sajna !

Most jutott eszembe, hogy lehet, hogy minden jól műxik az apacheban...mivel a primitív tesztoldalt mcedittel írtam lehet, hogy a beállítási hibák a linuxban vannak...már csak azért is, mert ha firefoxal nyitom meg az oldalt akkor más karakterrel helyettesíti az ékezetes betűket, mintha konquerorral nyitom meg.
De ez ilyen formában lehet, hogy hülyeség....de egy próbát megér nekem!

Apachenak mint ahogy fenteb birtak nem sok koze van a codepage-hez. Ha berakod a default charsetet, akkor csak azt ered el, hogy megprobalja arra atforditani az ekezetes karaktereket, holott az oldal maga utf-8 ban van pl. A html file fejlecebe kell az a meta tag amit fentebb is irtak es akkor a bongeszo tudni fogja mivel probalkozzon. Persze maga a html file kodolasa az legyen amit ott beallitottal.

A HTML file kódolását hol tudom beállítani :
-ha weboldalkészítő programot használok(pl:OpenOffice Writer/Web) ?
-ha csak egy egyszerű szövegszerkesztőt használok(pl:mcedit) ?

Tehát akkor ha jól értem, akkor az ékezetes betűk megjelenítése nem 'csak' az apache-tól, hanem a html dokumentumtól is függ !?

Ezt rakd a fejlecbe.

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
</head>

Ezt fentebb egyebkent mar irtak. Tehat a forrast szerkeszd es ird bele a fejlecbe. Nezz meg egy normalis weboldalt es latni fogod. Amugy ajanlom az utf-8 kodolast az iso-8859-2 helyett.

Es az apachetol egyaltalan nem fugg hanem csak a html file karakterkodolasatol, tehat ahogy kimented a szovegszerkesztodben/html szerkesztodben. Az apache akkor szol bele, ha beallitod azt a defaultcharsetet.

Ha OpenOffice-t használok akkor megjeleníti az ékezetes karaktereket is, de ha egyszerű szövegszerkesztőt, akkor megpróbálom beletenni ezt a kis kódot..!
Addig is köszi...

leg1xűbb és legajánlottabb tudtommal az AddDefaultCharset opciót utf-8-ra állítani.

a világ ma már alapban utf. bár úgy tudom, a BSD rendszerek még nem nagyon tudják ezt az általános karakterkészlet-kezelést, sajnos ...

Nekem semmi nem segít!! Átállítottam már a DefaultCharset-et, de semmi. A weblap fejlécében latin2-es van, és bármilyen php oldalt nézek, sehol sem mennek a magyar ékezetek. Opera alól sem. És hálózaton Win$ gépek alól sem. Mit lehet tenni? Közreadjam a configom, úgy könnyebb? Egyébként semmit sem változtattam benne, ezeken a dolgokon kívül. Please help me! :(

De igen, benne van a headerjében:

<*head>
<*title>Weboldalcim  -  
<*meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2">
<*META name="TITLE" content="www.webcim.hu">

Így már ötletem sincs mi a baj....
Ha feltöltöm a szerverre, akkor mindenhonnan szépen látszik, ezért gondoltam, hogy nálam (a localhoston) nincs rendben valami. Hmmmm .. :

"Ha feltöltöm a szerverre, akkor mindenhonnan szépen látszik, ezért gondoltam, hogy nálam (a localhoston) nincs rendben valami. Hmmmm .. :"

Esetleg a böngésződ karakterkódolását megnézhetnéd! :)

----------------------------------------------------------------
"Értem én hogy villanymotor, de mi hajtja!?

Boobaa az "AddDefaultCharset off"-ra esküszik, így a html még olyan kódolást állít be, amilyet akar.
Arra viszont - mint a fentiekben is olvashattuk- vigyázni kell, hogy ha az AddDefaultCharset ki van kommentezve, akkor az nem azt jelenti, hogy off-on van, hanem akkor beállítja ha jól emlékszem a 8859-1-et defaultnak. És akkor htmlből már küzdhet az ember akárhogyan...