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

	$("#insert_tema").click(function(){
		$.ajax({
			   type:"GET",
			   url:"pgs/insert_tema.php",
			   data:"cim="+$("#tema_cime").val(), //ez az input mező
			   async:true,
			   contentType: "text/html; charset=utf-8",
			   success: function(msg)
			   {
				   $("#csevego_tabla tbody").append(msg);
			   }
		});
	});


Előre is köszönöm a segítséget!
insert_tema.php

<?
header("Content-Type: text/html; charset=utf-8");
date_default_timezone_set("Europe/Budapest");
include 'kapcsolat.php';
$cim=$_GET['cim'];
$user=$_GET['user'];
mysql_query("insert into....");
echo "<tr><td>".$cim."</td> <td>".date("Y-m-d H:i:s")."</td> <td></td> <td>0</td> <td></td> </tr>";
mysql_close($c);
?>
Ja és az input-ot meg ilyen módon varázsolom elő

	$("#uj_tema").click(function(){
		$("#insert_tema").css({"visibility":"visible"});
		$("#beszur").html('<input type="text" name="tema_cime" id="tema_cime"></input>'); //így ni!
	});
 
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.
$("#insert_tema").click(function(){  
    $.ajax({  
           type:"GET",  
           url:"pgs/insert_tema.php",  
           data: {cim : $("#tema_cime").val()}, //itt van a key/value pár
           async:true,  
           contentType: "text/html; charset=utf-8",  
           success: function(msg)  
           {  
               $("#csevego_tabla tbody").append(msg);  
           }  
    });  
}); 
8

Ott a pont!

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