PHP';s rawurlencode不等于JavaScripts escape!为什么?

PHP';s rawurlencode不等于JavaScripts escape!为什么?,php,javascript,escaping,urlencode,Php,Javascript,Escaping,Urlencode,我意识到,当我在PHP编码中使用urlencode或rawurlencode对简单字符§(段落)进行编码时,我得到了以下结果:“%C2%A7” 但当我在Javascript中使用escape对该字符进行编码时,只得到“%A7” 在本例中,当运行PHP的服务器和试图通过ajax/jquery获取数据的javascript客户端之间发送/接收数据时,我遇到了编码问题 我想能够写任何类型的文字我想要的。为此,我对文本进行编码并将其发送到后端php脚本,转义数据并发送。当我检索到它时,在php端,我从m

我意识到,当我在PHP编码中使用urlencode或rawurlencode对简单字符§(段落)进行编码时,我得到了以下结果:“%C2%A7”

但当我在Javascript中使用escape对该字符进行编码时,只得到“%A7”

在本例中,当运行PHP的服务器和试图通过ajax/jquery获取数据的javascript客户端之间发送/接收数据时,我遇到了编码问题

我想能够写任何类型的文字我想要的。为此,我对文本进行编码并将其发送到后端php脚本,转义数据并发送。当我检索到它时,在php端,我从mysql获取数据,进行rawurlencode并将其发送回

两侧,在UTF-8模式下工作。jquery ajax函数被调用时使用
“contentType:application/x-www-form-urlencoded:charset=UTF-8”
,mysql服务器被设置为客户端和服务器的UTF-8,php脚本开始与
头进行响应(“application/x-www-form-urlencoded:charset=UTF-8”)

为什么PHP会生成%C2,它会在javascript端生成字符


有人能帮忙吗?

这显然是个难题:

[adrian@cheops3:~]> php -r 'echo rawurlencode(utf8_encode("§"));'
%C2%A7
[adrian@cheops3:~]> php -r 'echo rawurlencode("§");'
%A7
(终端显然没有在utf8模式下运行)


如果您的PHP代码中有一个文本
§
,请确保PHP文件保存为UTF8。

我不久前也遇到过同样的问题,并找到了解决方案:

function rawurlencode (str) {
    str = (str+'').toString();        
    return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
                                                                                    replace(/\)/g, '%29').replace(/\*/g, '%2A');
}
代码取自此处-
希望对您有所帮助。

查看屏幕上显示一个名为omid的用户。很有趣。所以在你的例子中,rawurlencode(§);仅返回%A7。但就我而言,我得到了%C2%A7。你认为这是来自我的php文件编码。如何检查文件编码?这东西甚至在我的终端我得到了%C2%A7。我的终端不是utf8吗?我怎样才能确定它是纯utf8。我的终端编码设置为utf-8.Hm好的,我这样做了:php-r'echo rawurlencode(utf8_decode(§”);'它只返回了%A7。这是什么意思?如果你得到%C2%A7,它是UTF8;如果不是,您将获得%A7。如果您使用的是vim,您可以使用
:set fenc=utf8
(或拉丁语1)设置文件编码,谢谢您提供的信息。但这是针对javascript方面的。javascript方面看起来还可以,因为数据正确地存储在mysql数据库中。从我的php端检索它是个问题。所以我需要PHP中的一些东西来为§啊废话获得正确的编码,刚刚得到它。我必须使用encodeURIComponent和decodeURIComponent。然后,javascript和php之间的编码和解码工作正常。您的rawurlencode是正确的,谢谢Radoslav。