Solved

AJAX and HTML encoding problem

Posted on 2010-09-07
9
571 Views
Last Modified: 2013-11-18
I have a problem with encoding with AJAX.

I am not using a framework, just standard javascript. Through AJAX I load a HTML file and display the responseText inside a div (innerHTML = req.responseText).

The problem is that it does not load a client-server request, but a regular HTML file, so the encoding goes crazy and things like á , é, í, etcetera are not displayed correctly. I would like to know if there is some way to indicate the XHMTLRequest object to load the response in a given encoding, or to give the HTML file that is loaded an specific header for the Ajax request to understand it correclty.
0
Comment
Question by:LeGrandi
  • 5
  • 4
9 Comments
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 33619983
It should display using the character set of the page that is loading it.  Is it the same as the page you are loading thru AJAX?  These pages are the most complete description of using AJAX that I have found: http://www.javascriptkit.com/dhtmltutors/ajaxgetpost.shtml
0
 

Author Comment

by:LeGrandi
ID: 33627047
Actually it works that way in Chrome, but not in Firefox or IE. How should I indicate in the html page which is loaded the charset?
0
 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 33628321
Use this line in the header, preferably as the first line below <header>.
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />

Open in new window

0
 

Author Comment

by:LeGrandi
ID: 33628387
It still doesn't work
0
Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

 
LVL 83

Expert Comment

by:Dave Baldwin
ID: 33628479
Does the encoding on the original page and the AJAX page match?
0
 

Author Comment

by:LeGrandi
ID: 33628843
The ajax, indeed, is not a Full page with <html></html> and <body></body>, but an HTML fragment and now has a <head></head> with the meta content-type inside
0
 
LVL 83

Accepted Solution

by:
Dave Baldwin earned 250 total points
ID: 33629495
Ok, the only way I was able to get the same encoding on the original page and the AJAX page is to force UTF-8 encoding.  Apparently javascript uses Unicode/UTF-8.  Trying to pass the Latin-1 characters thru it screws up the encoding and display.

Though some of my editors will read UTF-8, it was a real pain to get them to generate it.  Whatever they say, " á , é, í, " is not the same in Latin-1 and UTF-8.  Remove the <head></head> section from your AJAX text and find a way to force it to UTF-8 and use the meta header I gave you above.  Like I said, that's the only way I could find to make it work.
0
 

Author Comment

by:LeGrandi
ID: 33660879
Hi,

it definitely doesn't work, so I will html encode the conflictive characters which is far simpler.

Thanks
0
 

Author Closing Comment

by:LeGrandi
ID: 33660883
Not total solution.
0

Featured Post

Is Your Active Directory as Secure as You Think?

More than 75% of all records are compromised because of the loss or theft of a privileged credential. Experts have been exploring Active Directory infrastructure to identify key threats and establish best practices for keeping data safe. Attend this month’s webinar to learn more.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

SASS allows you to treat your CSS code in a more OOP way. Let's have a look on how you can structure your code in order for it to be easily maintained and reused.
Is your Office 365 signature not working the way you want it to? Are signature updates taking up too much of your time? Let's run through the most common problems that an IT administrator can encounter when dealing with Office 365 email signatures.
In this tutorial viewers will learn how to position overlapping items using z-index in CSS. They will also learn the restrictions on the z-index property.  Create a new HTML document with an internal stylesheet.: Create a div in CSS and name it Red.…
HTML5 has deprecated a few of the older ways of showing media as well as offering up a new way to create games and animations. Audio, video, and canvas are just a few of the adjustments made between XHTML and HTML5. As we learned in our last micr…

930 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

10 Experts available now in Live!

Get 1:1 Help Now