ugrás a tartalomhoz

Charset és ajax probléma

Matyas87 · 2010. Nov. 11. (Cs), 16.32
Sziasztok!Ez egy nagyon alap kérdés a charset terén de nem találtam rá választ.
Alapjáraton ha csinálok 1 html fájlt akkor az utf-8 kódolású,és elvileg abban is benne vannak a magyar karakterek nem?Minden szép és jó addig amíg fel nem töltöm a szerverre mert akkor jönnek a krix kraxok.Ezért átállítottam iso-8859-2ra a kódolást, ha így töltöm fel akkor jó. De most ajaxxal hivom be az aloldalakat, és az alapból utf-8ra van állítva,most az ajaxon belül nem sikerült a header részt beállitani iso-8859-2-ra pedig megnéztem hogy kell,se a jquerys se a sima változatba nem ment, ugyh minden oldara tettem külön fejlécet headerrel és charset meghatározással,így müködik csak igy meg az én gépemen vannak krix kraxok az ajaxos tartalomba. Hogy lehetne ezt megoldani hogy mindenhol jó legyen?vagy hogy utf 8 legyen mindenhol?a serveren kell beállitani a kódolást vagy hogy?Lehet már fenn volt ez valahol de én nem találtam csak php-s meg mysql-es dolgokat ez meg nem az.Köszi
 
1

UTF-8

Poetro · 2010. Nov. 11. (Cs), 16.44
Használj mindenhol UTF-8-at, és a szerveren is adj ki UTF-8 fejléceket. Lehet ezt .htaccess-ből, vagy PHP esetén header függvényel. például
AddCharset UTF-8 .html
További információval szolgál ezzel kapcsolatba a W3C oldala.
3

Hmm ezt a htaccess-es dolgot

inf · 2010. Nov. 11. (Cs), 20.45
Hmm ezt a htaccess-es dolgot nem is tudtam, király.
6

AddDefaultCharset megoldja

snaz · 2010. Dec. 23. (Cs), 19.46
Nekem az
 AddDefaultCharset ISO-8859-2 
vált be. az AddCharset-nek nem volt semmi hatása bármi is volt a meta tagbe írva. (.htaccess-t én hoztam létre, mert nem volt - aki esetleg szintén először csinál ilyet)

A MySQL egyébként utf8_hungarian_ci kódolású mezőket tartalmaz, de a kettő együtt jó ékezetes betűket mutat.

A Chrome egyébként szépen írta a magyar betűket, csak mikor FF-en és IE-n próbáltam bukott ki a hiba. Már csak az maradt, hogy az IE miért nem tölti be a css-t ami az ajax-al hívott file-hoz tartozik? Bár azt lehet máshonnan is hivatkozni...
8

a headerok erosebb sullyal

Tyrael · 2010. Dec. 25. (Szo), 11.59
a headerok erosebb sullyal esnek latba, mint a meta tagek, ezert elofordulhatott, hogy ugy volt beconfigolva a webszerver, hogy alapbol kuldte a szamodra rossz fejlecet.

a iso-8859-2 az nem utf-8, ha adatbazisban utf-8as encodingot hasznalsz, akkor ez igy nem jo.
allitsd be, hogy a webszerver utf-8as headert kuldjon, a php fajlok utf-8as encoding-gal legyenek elmentve, az adatbazisban a mezoidnel is utf-8at adj meg, valamint az adatbaziskapcsolatnal hasznalt client_encoding-ot: http://www.php.net/manual/en/function.mysql-set-charset.php

ha ezt mind beallitod, akkor kb. soha tobbet nem kell charsettel kapcsolatos hibakkal bohockodnod.

Tyrael
2

Szia! A fájlokat utf-8 bom

inf · 2010. Nov. 11. (Cs), 20.43
Szia!

A fájlokat utf-8 bom nélkül mentsd le.
Ilyen headerrel küldd ki a tartalmakat:

header('content-type: text/html; charset=utf-8');
aztán meg a html meta-ba is tehetsz utf-8 -as beállítást

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
illetve XML deklarációba is.

<?xml version="1.0" encoding="utf-8" ?>
Az ajaxnál az űrlaphoz is küldj headert:

xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=utf-8");
Továbbá a mysql-nél küldj ilyet csatlakozás után:
SET NAMES UTF8

Úgy emlékszem valahogy be lehet állítani konfigurációban is, hogy ilyen karakterkészlettel kommunikáljon.

Érdemes lenne ezt is kitenni GYIK-be, mert minden második kérdés ez.
4

utf-8

Matyas87 · 2010. Nov. 13. (Szo), 23.01
Köszi a választ, a htmlben tudtam hogy kell megadni a charsetet a problémám az az hogy alapjáraton a program utf-8at ad meg amivel nincs is bajom, mert elvileg jó. Addig jó is míg csak saját gépen nézegetem a saját oldalam de ha feltöltöm serverre akkor krix krax, csak akkor nem ha átteszem isoba akkor ezt a htaccessel kell?
5

Azért mert a szerver iso

inf · 2010. Nov. 14. (V), 01.23
Azért mert a szerver iso headert küld. Htaccess szerintem helyrehozza, már ha tényleg utf-8-ban van a fájl.
7

escape

janoszen · 2010. Dec. 23. (Cs), 19.56
Nem tudom, hogy segít-e, de én nem régen az escape() függvénnyel szívtam meg, mivel az nekem bizonyos karaktereket átkódolt UTF-8-ról Latin1-re. Persze így is működik, csak ezt nem tudtam. Megváltoztattam encodeURIComponent()-re és ez meg is oldotta a problémát.