gpt4 book ai didi

javascript - encodeURIComponent 似乎在我的字符串中添加了一个字符

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:16:54 24 4
gpt4 key购买 nike

jQuery.ajax() 在转义我的数据时做了一些奇怪的事情。

例如,如果我发送请求:

$.ajax({
url: 'somethinguninteresting',
data: {
name: 'Ihave¬aweirdcharacter';
}
});

然后在 Chrome devtools 中调查 XHR,它将“请求负载”显示为 name=Ihave%C2%ACaweirdcharacter

现在,我想通了:

'¬'.charCodeAt(0) === 172

172 是十六进制的 AC

逆向计算,十六进制的 C2(“额外”字符被添加到前面)是十进制的 194,而

String.fromCharCode(194) === 'Â'

我的问题:

为什么

encodeURIComponent('¬')

返回 '%C2%AC'看起来是调用

的结果
encodeURIComponent('¬')

(它本身返回 '%C3%82%C2%AC')?

最佳答案

虽然 JavaScript 在内部使用 UTF-16(或 UCS-2),但它执行基于 UTF-8 的 URI 编码。

172的序数值被编码成两个字节,因为它不能再用ASCII表示; UTF-8 中的两字节编码是这样完成的:

110xxxxx 10xxxxxx

x处我们填入172的二进制表示,即10101100:

11000010 10101100 = C2AC
^^^
pad

此结果随后经过百分比编码,最终形成 %C2%AC,这就是您在请求负载中看到的内容。

关于javascript - encodeURIComponent 似乎在我的字符串中添加了一个字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27141883/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com