ugrás a tartalomhoz

Ajax és a karakterkódolás

eBandee · 2009. Dec. 31. (Cs), 04.27
Mozilla + UTF-8 + Input + jQuery.Ajax(get) == OK
IE8 + UTF-8 + Input + jQuery.Ajax(get) != OK

Ezekkel a képletekkel tudnám legegyszerűbben jellemezni a hibát(?) amibe ütköztem. A lényeg, hogy van egy oldalam, mindenhol utf-8as headerrel, plusz egy input mezőm, aminek az értékét gombnyomásra hozzáadom egy adatbázishoz jQuery.Ajax segítségével.

Mo-ban tökéletesen működik, ám az IE8-nak meggyűlik a baja az ékezetes betűkkel.

Már a php-nak is hibásan küldi el a karaktereket. Én még nem találkoztam hasonlóval, de nagyon megköszönném, ha valaki tudná ezt orvosolni.


jQuery.ajax
  1. $("#insert_tema").click(function(){  
  2.     $.ajax({  
  3.            type:"GET",  
  4.            url:"pgs/insert_tema.php",  
  5.            data:"cim="+$("#tema_cime").val(), //ez az input mező  
  6.            async:true,  
  7.            contentType: "text/html; charset=utf-8",  
  8.            success: function(msg)  
  9.            {  
  10.                $("#csevego_tabla tbody").append(msg);  
  11.            }  
  12.     });  
  13. });  


Előre is köszönöm a segítséget!
insert_tema.php
  1. <?  
  2. header("Content-Type: text/html; charset=utf-8");  
  3. date_default_timezone_set("Europe/Budapest");  
  4. include 'kapcsolat.php';  
  5. $cim=$_GET['cim'];  
  6. $user=$_GET['user'];  
  7. mysql_query("insert into....");  
  8. echo "<tr><td>".$cim."</td> <td>".date("Y-m-d H:i:s")."</td> <td></td> <td>0</td> <td></td> </tr>";  
  9. mysql_close($c);  
  10. ?>  
Ja és az input-ot meg ilyen módon varázsolom elő
  1. $("#uj_tema").click(function(){  
  2.     $("#insert_tema").css({"visibility":"visible"});  
  3.     $("#beszur").html('<input type="text" name="tema_cime" id="tema_cime"></input>'); //így ni!  
  4. });  
 
1

más..

ironwill · 2009. Dec. 31. (Cs), 11.51
Szia!

A két böngésző különböző módon kezeli a karakterkódolás beállítását. Az egyik figyelembe veszi az utólag beállított oldal kódolást, míg a másik, magának a fájlnak a kódolását (ha megnyitod valami értelmesebb szerkesztővel, pl. notepad++, akkor ott kiírja milyen kódolású a fájl és könnyen konvertálhatós is) nézi.

Nekem is volt hasonló problémám ajax-al. Ott úgy lett megoldva, hogy FF UTF-8-as, míg az IE latin2-es kódolást kapott. Így tökéletesen működött..

Mondjuk az a legtisztább, ha megoldható, akkor átnézed a fájljaid kódolását és mindet beállítod UTF-8-ra (véletlenül se UTF-8 DOM-ra).

Remélem tudtam segíteni!

üdv, Gábor
3

így sem oké...

eBandee · 2009. Dec. 31. (Cs), 12.52
Talán 2 fájl maradt ANSI-ban a többi utf-8 (bom nélkül), de a biztonság kedvéért átkonvertáltam az összeset mégegyszer. Gépies módon beraktam minden fájl elejére a "header("Content-Type: text/html; charset=utf-8");" sort, gondoltam hátha... de nem.

Még azt nem tudom pontosan, hogy minden egyes include-olt meg javascripttel load-olt oldalon kötelezően kell lenni html,head,body tag-nek, doctype-nak, vagy csak elég az index oldalon (ide töltök mindent lényegében)?
2

mi a js file

Ajnasz · 2009. Dec. 31. (Cs), 12.36
mi a js file karakterkodolasa?
4

Mivel szolgálódik ki

janoszen · 2009. Dec. 31. (Cs), 12.53
És mivel szolgálódik ki?
5

utf-8 (bom nélkül)

eBandee · 2009. Dec. 31. (Cs), 12.53
np++ -al átkonvertáltam az összes létező szöveges fájlt amit a lap használ
7

sajnos

ironwill · 2009. Dec. 31. (Cs), 13.04
Szia!

Szerinted a js fájl kódolása lett volna a hunyó.. ? Elképzelhető..

Ennek én is utánna nézek majd!
Köszi a tippet! :)
üdv, Gábor

OFF: az a DOM, természetesen BOM akart lenni.. :) /OFF
6

A data tulajdonság key/value párként

oszi330 · 2009. Dec. 31. (Cs), 12.56
Szerintem próbáld ki, hogy a $.ajax data paraméterét nem stringként, hanem key/value párként adod meg, mert ekkor automatikusan meghívja a value-ra az encodeURI() vagy az escape() függvényeket.
  1. $("#insert_tema").click(function(){    
  2.     $.ajax({    
  3.            type:"GET",    
  4.            url:"pgs/insert_tema.php",    
  5.            data: {cim : $("#tema_cime").val()}, //itt van a key/value pár  
  6.            async:true,    
  7.            contentType: "text/html; charset=utf-8",    
  8.            success: function(msg)    
  9.            {    
  10.                $("#csevego_tabla tbody").append(msg);    
  11.            }    
  12.     });    
  13. });   
8

Ott a pont!

eBandee · 2009. Dec. 31. (Cs), 13.06
Remek! Ez megoldotta. Köszönöm! Ja, és BÚÉK!:D