我使用jQuery获取textarea值并使用ajax将其发布到服务器。
我正在使用escape(textarea.val())在jQuery中对URL进行编码。
在我的PHP脚本中,我使用rawurldecode将其转换回来。
这适用于键盘上的每个字符,但欧元符号(€)除外。相反,它返回十六进制代码(%u20AC)。
我不知道如何解决这个问题,据我所知,我的所有字符集设置都是有序的。
由于
答案 0 :(得分:1)
%u20AC
是€
的Unicode编码数据,由JavaScript的escape()
函数生成UTF8用于服务器端处理。
标准PHP urldecode无法处理它,因此您需要使用扩展例程:
/**
* @param string $str unicode and ulrencoded string
* @return string decoded string
*/
function utf8_urldecode($str) {
$str = preg_replace("/%u([0-9a-f]{3,4})/i","&#x\\1;",urldecode($str));
return html_entity_decode($str,null,'UTF-8');;
}
答案 1 :(得分:0)
您的jQuery脚本未根据RFC3986发送数据。
%u20AC
不是网址编码。