$.post()
が使用するデフォルトのエンコーディングを変更するにはどうすればよいですか?
引数はUTF-8でエンコードされています。 ISO 8859-1でエンコードするにはどうすればよいですか?
あなたは使うことができます:
contentType: "application/x-javascript; charset:ISO-8859-1"
以下のようにajax呼び出し中にコンテンツタイプを明示的に指定することで、デフォルトのコンテンツタイプを上書きできる場合があります。
$.ajax({
data: parameters,
type: "POST",
url: ajax_url,
timeout: 20000,
contentType: "application/x-www-form-urlencoded;charset=ISO-8859-15",
dataType: 'json',
success: callback
});
また、サーバーで文字セットを指定する必要があります。
例:php
<?php header('Content-Type: text/html; charset=ISO-8859-15'); ?>
これがお役に立てば幸いです。
文字セットはもう変更できないようです– $.ajax
docsの状態:
W3C XMLHttpRequest仕様では、文字セットは常にUTF-8であると規定されています。別の文字セットを指定しても、ブラウザがエンコーディングを変更する必要はありません。
XHR仕様のセクション4.5.6.4.4.3を参照してください: https://xhr.spec.whatwg.org/#the-send()-method
ContentTypeRecordが失敗せず、contentTypeRecordのパラメータ["charset"]が存在し、parameters ["charset"]がASCII大文字と小文字を区別せずに "UTF-8"と一致しない場合:
ContentTypeRecordのパラメータ["charset"]を "UTF-8"に設定します。
この仕様では、ブラウザは常にUTF-8として送信する必要があります。
ただし、fetch
APIを使用することはできます。これはXHRではないため、フェッチを使用して投稿すると、エンコーディングが尊重されます。
fetch(url, {
method: 'POST',
headers: {
'Content-Type': `text/plain; charset=${yourCustomEncoding}`
},
body
}).then(...