このトピックでは、EdgeRoutine (ER) でのエンコードに関するよくある質問に対する回答を提供します。
ERはどのようなエンコード方法をサポートしますか?
ERはUTF-8符号化のみをサポートする。
ERはパススルーモードでのデータ送信に影響しますか?
いいえ。 パススルーモードでは、ERはリクエストボディをフェッチしません。 ERはデータをストリームとして送信する。 リクエストヘッダーのみが変更されます。 リクエストボディは変更なしで送信されます。 ERはデータをネットワークストリームとして送信する。 ストリームはJavaScript仮想マシンを通過しません。
デフォルトでは、Fetch APIはストリームを解凍します。 したがって、ERはストリームも解凍する。 変更なしでデータを渡す場合は、解凍パラメーターを手動に設定します。
JavaScript文字列はUTF-16でエンコードされていますか?
いいえ。 UTF-16エンコーディングはASCIIと互換性がなく、サロゲートコードポイントを使用します。 webページにサロゲートペアとしてエンコードされたコードポイントが含まれている場合、文字エラーが発生する可能性があります。
String.substring
は、UTF-16コードポイントとして表される文字の部分文字列を抽出します。 サロゲートペアは、2つのタイプのUTF-16コードポイントを含む。 サブストリングでは、サロゲートペアはペアでなくてもよい。 サブストリングが対になっていないサロゲートペアを含む場合、サブストリングは、UTF-8でINVALID REPLACEMENT CHAR (65533)
として符号化される。 コードはブラウザに表示されません。
コンテンツはどのように変更できますか?
次のコードを使用して、データをバッファリングできます。
text/arrayBuffer/JSON...
ストリーム処理を実行するときは、サロゲートコードポイントを確認します。 サロゲートペアがペアリングされていないことを確認します。 サロゲートペアがペアになっていない場合、ERは抽出する部分文字列の範囲を決定できません。 ほとんどのwebページにサロゲートペアを使用する文字が含まれていないが、サロゲートペアを使用する絵文字が含まれている場合は、この考慮事項を無視できます。
Alibaba Cloudは、HTMLコードをより効率的に変更できるように、HTMLパーサーを間もなくリリースする予定です。 詳細については、Alibaba Cloud Internationalサイトのお知らせをご参照ください。
ArrayBufferをUTF-8でエンコードするか、UTF-8-encoded文字列をArrayBufferにデコードするにはどうすればよいですか?
TextEncoderまたはTextDecoderを使用して、エンコードまたはデコードを実行できます。