本文為您列出了邊緣程式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進行轉換。