Php 为什么Latté;=Latté;?

Php 为什么Latté;=Latté;?,php,javascript,mysql,json,Php,Javascript,Mysql,Json,我有一个网络表单和一个输入,如果你在Latté和POST中使用JSON $.ajax({ type: "POST", url: "http://"+document.domain+"/includes/rpc.php", data: {method:"add_item",item:item}, dataType: "json", timeout: 10000, success:...... item将是值LattéLatté被发布,响应的

我有一个网络表单和一个输入,如果你在Latté和
POST
中使用JSON

$.ajax({
    type: "POST",
    url: "http://"+document.domain+"/includes/rpc.php",
    data: {method:"add_item",item:item},    
    dataType: "json",
    timeout: 10000,
    success:......
item
将是值
Latté
Latté被发布,响应的JSON是
Latt\u00e9
,浏览器将其解释为
Latté
。实际上,这个脚本是一个WYSIWYG编辑器,所以您键入的内容可以返回。如果我刷新文本,Anyhue将从mysql中取出并显示为
LattÃ?
。所以我猜MYSQL不是正确的排序规则

更多信息-编辑数据库的查询是

updatemenu\u items SET description='Latté',其中item\u id='742'

JSON回复是


{“description”:“Latt\u00e9”,“id”:“#recordsArray_742”}

要么是数据库排序错误,要么是您使用的DBAL(PDO?)。

可能是MySQL的排序

它也可以是HTTP编码

或者您可以在PHP中使用不安全的字符串函数


这种错误可能在工具链的许多点上发生。

在输出PHP后端中获取的值之前,对其使用utf8_encode()

准确地说,排序规则是比较和排序字符串的方式。它与字符集有关系,但您的问题是字符集问题,而不是排序问题

您必须知道的第一件事是您正在使用的字符集。您使用的是UTF-8或LATIN1还是其他

之后,我将尝试从生成JSON字符串的PHP脚本中输出正确的头。例如,对于UTF-8:

header('Content-type: application/json; charset=utf-8');

这可能已经解决了您的问题,如果不解决,我们必须深入了解如何连接到数据库以及如何操作数据。如果您使用哪个MySQL库或框架连接数据库,请告诉我,并发布相关的源代码。

看起来(HTML)页面编码设置错误。尝试将其设置为UTF-8。更具体地说,所有内容都需要使用正确的字符集/编码。数据库表(具体为列)、与数据库的连接以及网页。添加了mysql\u set\u字符集('utf8',$dbh);通过连接,问题得以解决。谢谢