For example, is it valid ajax request:http/1.1のapplication/jsonコンテンツタイプでcharsetパラメータを使用できますか?
$.ajax({
type: "POST",
url: "SomePage.aspx/GetSomeObjects",
contentType: "application/json; charset=utf-8",
...
});
それは、used as an example sometimes、またはソフトウェアcan break without explicit charsetです。
The MIME media type for JSON text is application/json.
Type name: application
Subtype name: json
Required parameters: n/a
Optional parameters: n/a
It can be interpreted that charset shouldn't be used with application/json:
The rfc 4627 for application/json media typeは、セクション6で任意のパラメータを受け入れないことを言います。 UTF-8,16,32エンコーディングは、コンテンツからinferedすることができますので、
JSON text SHALL be encoded in Unicode. The default encoding is
UTF-8.
Since the first two characters of a JSON text will always be ASCII
characters [RFC0020], it is possible to determine whether an octet
stream is UTF-8, UTF-16 (BE or LE), or UTF-32 (BE or LE) by looking
at the pattern of nulls in the first four octets.
00 00 00 xx UTF-32BE
00 xx 00 xx UTF-16BE
xx 00 00 00 UTF-32LE
xx 00 xx 00 UTF-16LE
xx xx xx xx UTF-8
:
そしてsection 3は、文字セットを指定する必要はありませんことを を示唆しています。 UTF-8がデフォルトであると言うのはなぜですか?他の文字エンコーディングを選択する方法はrfcで指定されておらず、エンコーディングは確定的に使用できます。または、Unicodeをサポートする他の(UTF-8,16,32ではなく)文字エンコーディングがありますか?
が、私はそれがが落とさなければならないことを、あなたの評価に同意:
は、いくつかは charset can be usedと主張しています。 RFC 2046 には、「テキストのサブタイプ以外の他のメディアタイプは、 アプリケーションタイプでは、文字セットパラメータの存在に制限がないことを示しているので、ここで定義されているように、 文字セットパラメータを使用することを選択できます。さらにRFC2045は、 "MIME 実装では、 の名前が認識されないパラメータは無視しなければならない"と述べています。したがって、その存在によって何か害があると仮定することは妥当ではない。
5 rfc準拠のソフトウェアは、charsetパラメータを使用してcontent type application/jsonを生成しますか? rfc準拠のソフトウェアはそのような要求を受け入れるべきですか?
rfc 2045からの引用はどうですか?適切な文字セットを送信することは安全でなければなりません。 – jfs
@ J.F.Sebastian:話している実装が関連するすべての標準を手紙に正確に実装していると仮定しています。それはかなり大きな前提です。通常は、「(a)間違いなく間違っていませんか?そして(b)多少間違っている実装との相互運用性の問題を起こす可能性は低いですか? –
@Henning:no。私はそれを仮定していない(私の質問とその中のいくつかのリンクでは、非確認の例を見ることができる)。そして私は(a)と(b)の両方に同意します。適切な文字セットを送信すると、やや間違った実装が破られる場合があります。 – jfs