Haal doormiddel van AJAX een html file van de webserver om deze vervolgens doormiddel van een innerHTML in een DIV te "duwen". Werkt perfect, echter krijg ik vreemde tekens te zien op plaatsen waar letters staan als é. Ik zie een blokje staan. Wanneer ik de orginele html file bekijk ziet het er wel goed uit.

Doormiddel van:

objXml.open('GET', bestand, false); haal ik het bestand binnen.

Helemaal bovenaan het document waarin ik het bestand wil weergeven heb ik staan: <META http-equiv="Content-Type" content="text/html; charset=utf-8">

Heeft er iemand een idee?
Je moet zorgen dat de tekens weergegeven worden adhv speciaal daarvoor gebruikte codes. é is bijvoorbeeld &eacute;.
Maar in die htm file die ik ophaal door een request staat het gewoon goed. Er staat netjes een é. het gaat met het ophalen fout.
Probeer hetvolgende eens.

<?php

$data = htmlspecialchars($data); // $data is de data die je binnenkrijgt

?>
Euh, is een beetje moeilijk want ik gebruik javascript:

function openBestand(bestand)
{
bestand = bestand + "?rand=" + Math.random();

var objXml = maakXMLObj();

objXml.open('GET', bestand, false);
objXml.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
objXml.send(null);

return objXml.responseText;
}
Ik zou eigenlijk niet weten of dit kan met javascript.. ik ben voor je aan het zoeken...

EDIT: probeer de javascriptfunctie unescape() is. Weet niet of dit werkt, maar kijk maar is wat het doet.
Nee, helpt niets...
Niels schreef op 03.06.2009 22:27
EDIT: probeer de javascriptfunctie unescape() is. Weet niet of dit werkt, maar kijk maar is wat het doet.

alert(unescape('%28%29')); levert ().

Wat de oplossing voor dit probleem is weet ik zo ook niet, bestand in utf-8 ofzo opslaan misschien.
Volgens mij is er geen dergelijke functie in javascript. Maar heb een scriptje gevonden die je kunt gebruiken en natuurlijk kunt verrijken.



function htmlspecialchars(p_string) {
	p_string = p_string.replace(/&/g, '&amp;');
	p_string = p_string.replace(/</g, '&lt;');
	p_string = p_string.replace(/>/g, '&gt;');
	p_string = p_string.replace(/"/g, '&quot;');
//	p_string = p_string.replace(/'/g, '&#039;');
	return p_string;
};




Het maakt gewoon een functie aan waarin bepaalde tekens worden omgevormd tot specialchars. Is misschien het proberen waard.
dan blijf je bezig, en heb je straks een massa functie.

dit probleem bestaat al enorm lang, dus ik zou denken dat er wel een functie voor is al. jij niet dan...?

Reageren