本文為您列出了邊緣程序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進行轉換。
文檔內容是否對您有幫助?