Autor Zpráva
Kajana
Profil *
Ahoj,

mám odeslání formuláře přes Ajax:
$.ajax({ 
				   type: "POST",
				   url: "autosave.php",
				   data : "editor1="+editor1+"&hidden="+hidden+"&nadpis="+nadpis,
				   cache: false,
				   success: function(message)
				   {
					   $("#lastsavetime").empty().append("Last saved : "+message);
				   },
			}); 


V souboru autosave.php mám zpracování. Můj problém je, že se mi tam pošle rozházená čeština, místo např. "Česká spořitelna" se objeví "%u010Ceská Spo%u0159itelna".

Vše mám v kódování Windows 1250.

Zkoušela jsem:
<script charset="windows-1250" type="text/javascript">

také
$.ajaxSetup({
    'beforeSend' : function(xhr) {
        xhr.overrideMimeType('text/html; charset=windows-1250');
    }
  });

také v autosave.php
header('Content-Type: text/html; charset=windows-1250');

i hrátky s Iconv. Bohužel zatím nic nepomáhá :(
Chamurappi
Profil
Reaguji na Kajanu:
data : "editor1="+editor1+"&hidden="+hidden+"&nadpis="+nadpis
Co když bude v proměnné nadpis ampersand? Když zanořuješ text do nějakého formátu (ať už je to URL, nebo HTML, nebo SQL), musíš se přizpůsobit jeho syntaxi. V JavaScriptu je na to krásná metoda encodeURIComponent, bohužel ale enkóduje jen do UTF-8 (což by mělo být výchozí kódování URL).

se objeví "%u010Ceská Spo%u0159itelna"
To už ale provádíš nějaký escape, ne? S tebou uvedeným kódem bych takovýto výsledek neočekával.

Vše mám v kódování Windows 1250.
V jQuery není žádná metoda na konverzi do URL při kódování windows-1250.

xhr.overrideMimeType
Tuto metodu nepodporují všechny prohlížeče (=> způsobí chybu).
Kajana
Profil *
Díky moc za trknutí s "escape". Měla jsem tam
var nadpis = escape(document.formular.nadpis.value);


Po odstranění funguje :-)
Chamurappi
Profil
Reaguji na Kajanu:
I když do nadpisu někdo napíše ampersand?
Kajana
Profil *
To řeší ten encodeURIComponent ne?
var nadpis = encodeURIComponent(document.formular.nadpis.value);
Kcko
Profil
Kajana:
Ošetři si zasílanou hodnotu funkcí
 encodeURIComponent


Edit: zná
Chamurappi
Profil
Reaguji na Kajanu:
Ano, řeší. Psala jsi, že jsi escape odstranila, ne nahradila :-)

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0