web-dev-qa-db-ja.com

JSON.stringify()からUTF-8

Javascriptは、私が知る限り、UTF-16を文字列の標準として基本的に使用しています。 JSON.stringify()を使用すると、オブジェクトからJSON文字列を作成できます。

そのJSON文字列UTF-16はエンコードされていますか?

巨大なファイル(1MB JSON)の帯域幅を節約するために、その文字列をUTF-8に(できれば高速に)変換できますか?

7
Sebastian Barth

JavaScriptエンジンはUCS-2またはUTF-16のいずれかを使用できます。

したがって、はい、JSON.stringify()は、実装が文字列に使用するエンコーディングで文字列を返します。そのエンコーディングを変更する方法を見つけた場合スクリプトのコンテキスト内、それは有効なJavaScript文字列ではなくなります。

ただし、ネットワーク経由でシリアル化する場合は、HTTPリクエストの文字セットに自動的にトランスコードされると思います(HTTPについて話していると仮定します)。したがって、UTF-8の文字セットを使用してHTTP POST経由で送信する場合、ブラウザは送信前にそのデータのトランスコーディングを透過的に処理する必要があります。

そうしないと、ブラウザは文字セットの処理に本当に苦労します。