我最近在使用html数据URI时遇到问题:
我的源html包含字符ā
,当直接加载html时,该字符正确显示。但是,当html转换为数据URI时,该字符改为呈现为Ä
。
在仔细研究了结果URI之后,我发现该字符已被编码为%c4%81
,但这似乎是ā
的正确URI编码。
我什至尝试将数据URI转换为base64,但是遇到了同样的问题。 Chrome和Safari都可能发生这种情况。
我想知道在数据URI中对多字节unicode字符进行编码是否存在问题,因为ā
当前是我的html中唯一的多字节字符。
console.log(encodeURIComponent('ā'));
// https://stackoverflow.com/questions/23223718/failed-to-execute-btoa-on-window-the-string-to-be-encoded-contains-characte
console.log(btoa(unescape(encodeURIComponent('ā'))));
<iframe src="data:text/html,%c4%81"></iframe>
<iframe src="data:text/html;base64,xIE="></iframe>