Vreemde tekens na XMLHttpRequest (AJAX)

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Haal doormiddel van AJAX een html file van de webserver om deze vervolgens doormiddel van een innerHTML in een DIV te "duwen" (zie topic http://gathering.tweakers.net/forum/list_messages/1353236). Werkt perfect, echter krijg ik vreemde tekens te zien op plaatsen waar letters staan als é. Wanneer ik de orginele html file bekijk ziet het er wel goed uit.

Nu stuur ik al zoiets mee:

objXml.open('GET', bestand, false);
objXml.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

Heeft er iemand een idee?

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

WAT voor vreemde tekens :)

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Er komt te staan: Andr�an Duin i.p.v. André van Duin

Acties:
  • 0 Henk 'm!

  • Otherside1982
  • Registratie: Februari 2009
  • Laatst online: 20-09 08:41
Je vraagt je HTML bestand op met charset=utf-8, maar waarschijnlijk zet je hem als ANSI in je DIV. Daardoor wordt je é anders getoond: in UTF-8 neem dat karakter 2 bytes in; die 2 bytes worden dan in ANSI charset getoond die voor die 2 bytes 2 karakters zal tonen.

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Otherside1982 schreef op dinsdag 02 juni 2009 @ 15:19:
Je vraagt je HTML bestand op met charset=utf-8, maar waarschijnlijk zet je hem als ANSI in je DIV. Daardoor wordt je é anders getoond: in UTF-8 neem dat karakter 2 bytes in; die 2 bytes worden dan in ANSI charset getoond die voor die 2 bytes 2 karakters zal tonen.
Yup, dat probleem heb ik ook met mijn signature, die trek ik uit een XML/RSS feed van Nu.nl en als ik dat omzet naar Tweakers signature, dan gaat het soms ook stuk. En dan voornamelijk op de 2bytes ascii caracters!

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Otherside1982 schreef op dinsdag 02 juni 2009 @ 15:19:
Je vraagt je HTML bestand op met charset=utf-8, maar waarschijnlijk zet je hem als ANSI in je DIV. Daardoor wordt je é anders getoond: in UTF-8 neem dat karakter 2 bytes in; die 2 bytes worden dan in ANSI charset getoond die voor die 2 bytes 2 karakters zal tonen.
Ik heb het ook met een andere charset geprobeerd, maar mocht niet baten. Hoe kan ik dit eenvoudig oplossen?

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

Zorg ervoor dat de server het ook serveert als utf-8 (correcte headers meegeven dus) en let erop dat de data ook daadwerkelijk utf-8 is.

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Haal m door PHP utf8_encode:

http://nl.php.net/utf8_encode

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

Verwijderd

Ja joh, gewoon lekker proberen totdat het werkt. Dat is lekker makkelijk want dan hoef je d'r verder niks van te snappen :/

Acties:
  • 0 Henk 'm!

  • Matis
  • Registratie: Januari 2007
  • Laatst online: 10:43

Matis

Rubber Rocket

Verwijderd schreef op dinsdag 02 juni 2009 @ 15:34:
Ja joh, gewoon lekker proberen totdat het werkt. Dat is lekker makkelijk want dan hoef je d'r verder niks van te snappen :/
Sorry dat dat serieus overkwam, ik had er wss beter een :+ bij kunnen zetten.

Natuurlijk werkt dat niet netjes, echter kan dienen als een Last Resort!

If money talks then I'm a mime
If time is money then I'm out of time


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Wolfboy schreef op dinsdag 02 juni 2009 @ 15:27:
Zorg ervoor dat de server het ook serveert als utf-8 (correcte headers meegeven dus) en let erop dat de data ook daadwerkelijk utf-8 is.
Euh, helemaal snappen doe ik het niet...

Wanneer ik de html dus rechtstreeks op de webserver oproep is het goed, dus ik neem aan dat de server hem goed "serveert".

Er staat bovenaan mijn pagina: <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> Hiermee heb ik ook nog geexpirementeerd, maar geeft geen verbetering. Het gaat na het ophalen via Ajax fout...

Acties:
  • 0 Henk 'm!

  • BtM909
  • Registratie: Juni 2000
  • Niet online

BtM909

Watch out Guys...

nico_van_wijk schreef op dinsdag 02 juni 2009 @ 15:43:
[...]
Euh, helemaal snappen doe ik het niet...

Wanneer ik de html dus rechtstreeks op de webserver oproep is het goed, dus ik neem aan dat de server hem goed "serveert".
Hoe wordt het door de web server geserveerd (View Page Info in FF)?

Ace of Base vs Charli XCX - All That She Boom Claps (RMT) | Clean Bandit vs Galantis - I'd Rather Be You (RMT)
You've moved up on my notch-list. You have 1 notch
I have a black belt in Kung Flu.


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
BtM909 schreef op dinsdag 02 juni 2009 @ 15:52:
[...]

Hoe wordt het door de web server geserveerd (View Page Info in FF)?
Als: text/html; charset=iso-8859-1

Als ik de html rechtstreeks opvraag staat er: windows-1252 en dan is het dus wel goed...

Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

nico_van_wijk schreef op dinsdag 02 juni 2009 @ 15:43:
[...]
Euh, helemaal snappen doe ik het niet...

Wanneer ik de html dus rechtstreeks op de webserver oproep is het goed, dus ik neem aan dat de server hem goed "serveert".

Er staat bovenaan mijn pagina: <META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> Hiermee heb ik ook nog geexpirementeerd, maar geeft geen verbetering. Het gaat na het ophalen via Ajax fout...
Als bovenaan jouw pagina's iso-8859-1 staat en dat werkt dan is dat blijkbaar de encoding van je data. Dus _niet_ utf-8.

Probeer dat dus eens bij het ophalen van de ajax data :)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Wolfboy schreef op dinsdag 02 juni 2009 @ 16:13:
[...]
Als bovenaan jouw pagina's iso-8859-1 staat en dat werkt dan is dat blijkbaar de encoding van je data. Dus _niet_ utf-8.

Probeer dat dus eens bij het ophalen van de ajax data :)
Had al geprobeerd: objXml.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=iso-8859-1");

Maar dat gaf geen verbetering.

Acties:
  • 0 Henk 'm!

  • Swaptor
  • Registratie: Mei 2003
  • Laatst online: 17-06 07:31

Swaptor

Java Apprentice

Tip: serveer de brondata met encoding UTF-8.

Ontdek mij!
Proud NGS member
Stats-mod & forum-dude


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Swaptor schreef op dinsdag 02 juni 2009 @ 16:27:
Tip: serveer de brondata met encoding UTF-8.
Dat doe ik nu, maar heeft geen resultaat.

In m'n meta helemaal bovenaan de pagina zet ik: <META http-equiv="Content-Type" content="text/html; charset=utf-8">

Vervolgens zeg ik objXml.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=utf-8");

Euh, dan kan het toch niet meer fout gaan. Helaas zie ik nog steeds: Andr�azes

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Je bent nog steeds aan het gokken. Op deze manier vind je wellicht per toeval vrij snel een pleister, maar verwacht niet dat je dan het probleem voor eens en altijd opgelost hebt. :>

{signature}


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Voutloos schreef op woensdag 03 juni 2009 @ 21:36:
Je bent nog steeds aan het gokken. Op deze manier vind je wellicht per toeval vrij snel een pleister, maar verwacht niet dat je dan het probleem voor eens en altijd opgelost hebt. :>
???? Ik snap niet waarom ik zit te gokken?

Ik probeer me erin te verdiepen en lees er van alles over op internet. Zie alleen geen oplossing?

Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
De echte oplossing is dus uitzoeken/debuggen wat de encoding van elke string op elk punt in de hele flow is en is dus niet iets in de trant van 'zet op punt A eens header B neer'.

Ergo, prima dat je je inleest, maar nu moet je zelf gaan uitzoeken op welk punt precies de inhoud van de string niet meer overeenkomt met de (al dan niet impliciet aangenomen) encoding en dan zal de fix vanzelf duidelijk zijn. Aangezien wij niet het complete debugwerk kunnen doen is er gewoon niets verder voor dit concrete probleemgeval te bespreken.

Los van de details van character sets en encodings in het algemeen komt het gewoon op debugging of vanaf begin af aan weten wat je doet (dwz zo snel mogelijk dit altijd expliciet definieren) aan. Het is imo dus niet concreet gezamenlijk in een topic op te lossen, maar dit wordt uiteindelijk altijd wel geprobeerd omdat iedereen het nou eenmaal leuk vind om te gokken.

offtopic:
Niet alles in deze post slaat direct enkel op jou en het is ook niet bedoeld als aanval, maar in topics over 'vreemde tekens' is gewoon niets meer te zeggen dan 'stop met gokken, lees je in en ga zelf debuggen'. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • nico_van_wijk
  • Registratie: Januari 2008
  • Laatst online: 10-09 13:07
Beste Voutloos,

Er valt niets te debuggen. Ik weet hoe de file eruit ziet voor dat hij met een request wordt opgehaald. Als ik daarna de tekst display met een alert vlak nadat hij weer opgehaald wordt zie ik die tekens staan. Ik weet dan toch wanneer het fout gaat...

Acties:
  • 0 Henk 'm!

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 10:44

crisp

Devver

Pixelated

nico_van_wijk schreef op woensdag 03 juni 2009 @ 21:24:
[...]

In m'n meta helemaal bovenaan de pagina zet ik: <META http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta> dicteert geen karakter encoding, dat doen HTTP headers, zeker in een setting waar content-sniffing niet aan de orde is (zoals bij de respons van een XHR)

Intentionally left blank


Acties:
  • 0 Henk 'm!

  • Wolfboy
  • Registratie: Januari 2001
  • Niet online

Wolfboy

ubi dubium ibi libertas

crisp schreef op woensdag 03 juni 2009 @ 22:40:
[...]

<meta> dicteert geen karakter encoding, dat doen HTTP headers, zeker in een setting waar content-sniffing niet aan de orde is (zoals bij de respons van een XHR)
Daar moet eventjes bij gezegd worden dat in het geval van standaard HTML de <meta> tags fungeren als "extra" headers. Alles wat je dus in <meta> zet zou in principe ook in de headers kunnen en voor de meeste headers, vice versa. In de praktijk werkt dit overigens niet in alle gevallen goed dus wel mee opletten ;)

Blog [Stackoverflow] [LinkedIn]


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 02:21

Janoz

Moderator Devschuur®

!litemod

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'

Pagina: 1