本文為您列出了邊緣程式ER(EdgeRoutine)編碼相關的常見問題。

ER支援哪些編碼方式?

ER只支援UTF-8編碼。

ER是否影響透傳?

不影響透傳。透傳是指不讀取請求的body,而是以流的方式傳遞,即只更改頭,body原封不動的傳遞出去。由於ER是純網路流的透出,不會進入JS虛擬機器。
说明 Fetch預設會解壓縮,所以ER也會對流解壓縮,如果您想原封不動的透出,請將decompress設定為manual。

JavaScript的字串是UTF-16標準編碼嗎?

不是。UTF-16編碼格式不相容ASCII編碼,且存在Surrogate的codepoint。如果您的網頁中存在使用Surrogate編碼的codepoint,在有些情況下會導致字元錯誤。

String.substring 是substring的UTF-16 codepoint,surrogate佔2個UTF-16 codepoint,substring有可能把一個surrogate切成兩個。如果substring中帶有殘缺的surrogate,會導致UTF-8將其編碼為 INVALID REPLACEMENT CHAR (65533) ,該碼在瀏覽器中會被跳過,不進行顯示。

如果需要改動我的內容應該如何處理?

您可以使用以下代碼進行緩衝。

     text/arrayBuffer/JSON ...
    
注意
  • 進行流失處理時需注意surrogate的codepoint,確保surrogate不被切斷,如果surrogate被切斷,您將無法判斷您讀取的內容。如果您的大部分網頁不包含需要使用surrogate的字元,僅有些emoji需要使用,則無特別注意事項。
  • 阿里雲即將推出HTML解析器,以協助您更好地修改HTML代碼內容,具體請關注阿里雲官網資訊。

如何將ArrayBuffer轉換成UTF-8,或者將UTF-8轉換成ArrayBuffer?

您可以使用TextEncoder和TextDecoder進行轉換。