ugrás a tartalomhoz

Ajax adatküldés után php-vel megfelelő karakter kódolás

s_volenszki · 2006. Okt. 26. (Cs), 16.15
Sziasztok!

Biztos megint olyat kérdezek ami teljesen kézenfekfő, és valószínüleg kapok is majd a fejemre, de nem boldogulok egy apró problémával!

Ajaxal elküldöm az adatokat egy php file-nak hogy feldolgozza, de nem tudom megfelelően kezelni a karaktereket! Javascriptben a küldés előtt csinálok encodeURI-t, és php-ben urldecode-t. De nem stimmelnek az ékezetes betük!

Ez lesz az Álmos szóból: Álmos

Ha mondok az urinak az urldecode helyett rawurlencode és egy html_entity_decode, akkor teljesen helyesen megkapom a százalék jelekkel elválasztott hexadecimális karakter kódokat! Hogyan lesz ezekből újra betű?

Gondoltam ez is egy megoldás: ereg_replace("%C3%81", "Á", $sentdata); ,de ennyire pancser nem lehetek!

Segítségeteket előre is köszönöm!

s_volenszki
 
1

Karakterkódolás

Anonymous · 2006. Okt. 26. (Cs), 16.21
Érdemes beállítani a karakterkódolást, vagy az AJAX-os fájl által küldött kódban, vagy pedig ott, ahol a kapott értékek feldolgozásra kerülnek.
<?php header("Content-Type: text/HTML; charset=UTF-8"); ?>
2

és hol lesz belőle ez?

amonrpg · 2006. Okt. 26. (Cs), 17.05
A fő kérdés, hogy milyen kódolású a kiadott oldalad, ami küldi vissza az adatot.
Másrészt hol látod ezt az eredményt? DB-ben? Csak kiíratod? Vagy hol nézed?
Nem mindegy.
Ha DB-ben, akkor ellenőrizd, hogy a DB és az alkalmazás (plusz apache header kiküldés) mind stimmel-e.
Plusz olvasd el a siteon legfölül lévő karakterkódolásról szóló cikket. :D
4

Hol nézem...

s_volenszki · 2006. Okt. 26. (Cs), 21.59
Először mysql-be írtam az eredményt, de a hiba miatt átváltottam egy sima mail függvényre, ami elküldi az eredményt! Az az érdekes hogy IE mindent jól csinál, Ffx meg nem!

s_volenszki
5

Megoldás

s_volenszki · 2006. Okt. 28. (Szo), 08.57
Átolvastam a karakterkódolásról szóló cikket, és azok alapján átnéztem az oldalakat, adatbázist. Meglepő de mindent rendben találtam. Azt hiszem.

Tovább kutakodtam itt a laboron, és Bártházi András, AJAX fejlesztés - kommunikáció cikke hozzászólásaiban találtam meg a megoldást:

$data = iconv("UTF-8", "ISO-8859-1", urldecode($inval['key']));
Így már minden rendben van az ékezetes karakterekkel! Felmerült még egy kérdés a témában, de annak nyitok egy új topikot!

s_volenszki
8

ajax iconv

virág · 2007. Május. 19. (Szo), 14.58
Utóbbi időben egyre több hibába botlottam az ICONV-nál, az mb-lib sokkal jobb szerintem, ha van lehetőség a használatára, akkor ajánlom.

http://hu.php.net/manual/hu/function.mb-convert-encoding.php

(persze ICONV is megfelelő)
3

egy link

Anonymous · 2006. Okt. 26. (Cs), 17.07
itt eléggé kivesézték ezt a problémát :)
6

é helyett ĂŠ

chipi · 2007. Május. 18. (P), 20.35
Sziasztok!

Hát nekem is lenne egy számomra érhetetlen probléma.
Én is POST ból kapot ajaxon keresztük php ig kommunikál.
Az a gond amikor elküldöm az adatot akkor az ékezetes karakterekre egy kicsit furám reagál. Hát itt az é helyett ĂŠ valami érhetetlen karaktert kaptam, de nem tudom, hogy miért?
A php ban a headerben Latin2 re állítottam be, aztán UTF8 ra. UFT8 nál okés a küldött ékezetes karakterek, de akkor meg amivel összehasonlítom akkor meg kérdőjeleket kapot szépen és valami itt nem jó, de nem értem, már az ererni() függvényt is körbejártam, de nem jó :(
Mi lehet a megoldás? Vagy ötlet?
7

problémás pontok

s_volenszki · 2007. Május. 18. (P), 21.05
Szia!

Én amikor ezt a topikot nyitottam a következő hibákat követtem el. Ezekre ha odafigyelsz, minden szuper lesz!

1. Az adatok megfelelő előkészítése (encode-olása) küldés előtt. Nekem a jól bevált módszer ez=>

DataToSend = escape(encodeURIComponent('Szép ékezetes betűláncolat!')
URI = 'data=' +  DataToSend ;
makePOSTRequest('feldolgozo.php',URI);
2. A feldolgozó php file header-e =>

header('Content-Type: text/html; charset=ISO-8859-2');
3. Az adatok decode-olása php-ben =>

$data = iconv("UTF-8", "ISO-8859-2", urldecode($data));
Akkor tudod hatékonyan a hiba okát kutatni, ha a lehető legkevesebb hibalehetőséggel dolgozol. Először hagyd ki az adatbázis műveletet, és írd az eredményt txt file-ba vagy küld el magadnak e-mail-ben ahogyan azt már írtam feljebb, és meg fogod találni a hibapontot.

s_volenszki
9

két vonatkozó cikk

Hodicska Gergely · 2007. Május. 19. (Szo), 20.23
http://weblabor.hu/cikkek/karakterkodolasiproblemakkikuszobolese
http://weblabor.hu/cikkek/jsadatcsere


Üdv,
Felhő