コンテンツタイプがtext/html、text/plain、またはtext/xmlではなく、application/x-www-form-urlencodedコンテンツタイプの場合、文字セットの設定方法を理解できません。
この(単純化された)JavaScriptコードを考えると:
var xhr = new XMLHttpRequest();
I しないでください明示的にエンコードを設定すると、
xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
firebugは、コンテンツタイプが「application/x-www-form-urlencoded; charset = TF-8」であることを教えてくれます。
たとえば、文字セットをISO-8859-1に設定すると、
xhr.open('POST', 'serv.php', true);
xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=ISO-8859-1');
firebug stillは、「application/x-www-form-urlencoded; charset = TF-8。」と通知します。
私が何かをしようとすると
xhr.setRequestHeader('Content-Type', 'text/plain; charset=ISO-8859-1');
次に、文字セットを尊重します。
すべての場合において、send()メソッドは次のようになります。
xhr.send('id=9&name=Yoda');
Content-Typeがx-www-form-urlencodedである場合、指定した文字セットを尊重しないのはなぜですか?
注:私はISO-8859-1を例として使用しています。私の目標は、何が起こっているのかを理解することです。
application/x-www-form-urlencoded
mimeタイプはパラメーター(charset
など)をサポートしていません。 HTML5仕様の このセクション を見ると、文字セットがどのように決定されているかがわかります(複雑です)。特に、セクションの下部には、MIMEタイプのパラメーターとして文字セットを指定できないという注記があります。