我正在使用CKEditor,并输入一些带有特殊字符的文字:“Bâtisseursinssionnés”,注意法国特殊字符。然后我使用javascript escape()来获取输入并通过AJAX / JSON将其发送到PHP服务器脚本。
在PHP方面,在使用urldecode()之前和之后,日志输出如下所示,它似乎转换了
标记部分,但特殊字符只显示为“?”并存储在数据库中。我应该使用另一个电话吗?或者urldecode中不包含特殊字符?
$json = json_decode($data);
error_log("URLDecode: before: " . $data);
error_log("URLDecode: after: " . urldecode($data));
,输出看起来像
URLDecode: before: %3Cp%3E%0A%09B%E2tisseurs%20passionn%E9s%3C/p%3E%0A
URLDecode: after: <p>
B?tisseurs passionn?s</p>
答案 0 :(得分:1)
转义不是php urldecode 的匹配对。
在javascript中使用encodeURIComponent。
escape和unescape功能
对于非ASCII字符,escape和unescape函数无法正常工作,并且已被弃用。在JavaScript 1.5及更高版本中,使用encodeURI,decodeURI,encodeURIComponent和decodeURIComponent。