Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php jQuery代码未正确传递特殊字符_Php_Javascript_Jquery_Ajax_Jeditable - Fatal编程技术网

Php jQuery代码未正确传递特殊字符

Php jQuery代码未正确传递特殊字符,php,javascript,jquery,ajax,jeditable,Php,Javascript,Jquery,Ajax,Jeditable,我有一个使用jQuery表格插件(通过AJAX进行内联编辑)的站点。问题是,如果您输入类似“Entrées”的内容(这是用于编辑餐厅菜单的,因此应该期望这样的输入),那么获取该值的AJAX PHP脚本将收到“Entrées”。如何确保正确发送所发送的值 更奇怪的是,数据库值存储为“EntrÃes”,但当显示在网页上时,它会正确地显示“Entrées”。确保不仅输入文本的表单,而且显示文本的页面都使用UTF8编码。如果你的“测试”只是一个简单的echo。。。;退出很可能此页面未呈现为UTF8。在发

我有一个使用jQuery表格插件(通过AJAX进行内联编辑)的站点。问题是,如果您输入类似“Entrées”的内容(这是用于编辑餐厅菜单的,因此应该期望这样的输入),那么获取该值的AJAX PHP脚本将收到“Entrées”。如何确保正确发送所发送的值


更奇怪的是,数据库值存储为“EntrÃes”,但当显示在网页上时,它会正确地显示“Entrées”。

确保不仅输入文本的表单,而且显示文本的页面都使用UTF8编码。如果你的“测试”只是一个简单的
echo。。。;退出很可能此页面未呈现为UTF8。

在发送字符串之前,您必须在字符串上使用javascript encodeURI()函数。

我想我可能已经解决了这个问题。使用escape()而不是encodeURI()工作正常。有人知道为什么会这样吗

escape()返回:Entr%E9es

encodeURI()返回:Entr%C3%A9es


非常奇怪。

我的标题中有
。这是否足够?我是否也应该使用PHP来设置标题的字符集?(顺便说一句,我让AJAX脚本将接收到的原始输入直接输出到一个.txt文件中,它仍然显示“EntrÃes”。)从服务器发送的头通常更好,一些浏览器使用它们,如果它们可用的话,即使文件包含不同的头。您知道如何在表的上下文中这样做吗?文件有点粗制滥造和不完整。我必须在评论中搜索比文档本身更有用的信息:PI找到了答案(只是编辑了源JS文件本身)。但是,现在收到的输入是“Entr%C3%A9es”,与“EntrÃes”相同。这是怎么回事?>我只是想说:)好了,现在在服务器端使用urldecode()(PHP)只会产生“Entrées”,正如我在上面的评论中提到的(Entr%C3%A9es=Entrées)。见下面我的答案。使用escape()客户端(在发送用户输入之前)生成了正确的值(Entr%E9es=Entrées),而encodeURI()没有。escape适用于ascii字符,但如果要发送ascii范围以外的字符,则必须在服务器端使用encodeURI和uridecode。这与页面或代码无关,因为ajax(get)参数是作为url查询字符串发送的,并且有自己的规则。