I am having trouble understanding how to set the charset when the content type is not text/html, text/plain, or text/xml, but is application/x-www-form-urlencoded content type instead.
Given this (simplified) javascript code:
var xhr = new XMLHttpRequest();
If I do not explicitly set the encoding,
xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
firebug tells me that the content type is "application/x-www-form-urlencoded; charset=UTF-8."
If I set the charset to ISO-8859-1 for instance,
xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
firebug still tells me "application/x-www-form-urlencoded; charset=UTF-8."
If I try something like
xhr.setRequestHeader('Content-Type', 'text/plain; charset=ISO-8859-1');
then it respects the charset.
In all the cases the send() method goes like this:
xhr.send('id=9&name=Yoda');
Why doesn't it honor the charset I specify if the Content-Type is x-www-form-urlencoded?
NOTE: I am using ISO-8859-1 just as an example. My goal is to understand what is going on.