Closed
Bug 528460
Opened 15 years ago
Closed 14 years ago
xmlhttprequest.responseText should not been converted charset automatically
Categories
(Core :: DOM: Core & HTML, defect)
Tracking
()
RESOLVED
INVALID
People
(Reporter: kexianbin, Unassigned)
Details
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.3a1pre) Gecko/20091112 Minefield/3.7a1pre
Build Identifier: Firefox 2.0- Firefox 3.6
With FF3, when I set the parameter "Accept-Charset" in the header of a request sent by XMLHttpRequest, FF3 replace it by its default value. FF2 and IE is ok with my code.
My code :
Code: Select all
httprequest=new XMLHttpRequest();
httprequest.open('GET', "MY_URL", true);
httprequest.setRequestHeader("Accept-Charset", "ISO-8859-1");
httprequest.setRequestHeader("PERSONAL_VAR", "value");
httprequest.send(null);
With Firebug i see the parameter "PERSONAL_VAR" but Accept-Charset = ISO-8859-1,utf-8;q=0.7,*;q=0.7
And the current draft of the W3C XMLHttpRequest specification <http://www.w3.org/TR/XMLHttpRequest/> explicitly forbids setting the Accept header field:
"If the user agent implements server-driven content-negotiation it should set Accept-Language, Accept-Encoding and Accept-Charset headers as appropriate; it must not automatically set the Accept header."
Firefox should not convert my xmlhttprequest.responseText from utf-8 to charset of current page, because xmlhttprequest.responseText is in right the charset of current page, that would make nonsense characters.
Reproducible: Always
Steps to Reproduce:
1.index.php(save as gb2312):
<?
header('Content-Type', 'text/html;charset=gb2312');
echo '<div>中国人都是好样的</div>';
?>
2.test.htm:
<meta content="text/html; charset=GB2312" http-equiv="content-type"/>
<script>
var xhr=new XMLHttpRequest();
xhr.open('GET', 'index.php', true);
xhr.overrideMimeType('text/plain; charset=x-user-defined');
xhr.onreadystatechange=function()
{if (xhr.readyState==4)
{alert(xhr.responseText);
}
};
xhr.send('');
</script>
3.the text in alert box:
�й��˶��Ǻ����
Actual Results:
wrong text:
�й��˶��Ǻ����
Expected Results:
correct text:
中国人都是好样的
Updated•14 years ago
|
Component: General → DOM: Mozilla Extensions
Product: Firefox → Core
QA Contact: general → general
In firefox 3.6.13:
in test.htm, if i write:
xhr.overrideMimeType('text/plain; charset=gb2312');
it works,
but if i don't use overrideMimeType, firefox will take the gb2312 characters from index.php as utf-8 encoded and convert them into rubbish.
Sorry, i made a mistake in php code, it should be:
header('Content-Type:text/html;charset=gb2312');
In firefox 3.6.13:
if i don't set overrideMimeType, firefox can recognize gb2312 characters as gb2312 encoded.
So i close the bug.
Status: UNCONFIRMED → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Updated•14 years ago
|
Resolution: FIXED → INVALID
Assignee | ||
Updated•12 years ago
|
Component: DOM: Mozilla Extensions → DOM
Assignee | ||
Updated•6 years ago
|
Component: DOM → DOM: Core & HTML
You need to log in
before you can comment on or make changes to this bug.
Description
•