【发布时间】:2014-11-11 19:16:26
【问题描述】:
我查询数据库,然后我想在 json 中编码响应。
由于'name'和'description'两个字段包含一些诡异的字符,json的编码不成功。
在我对从数据库接收到的数组进行编码后,json 的长度只有 4 个字符。
如果我不从数据库中查询包含那些非常奇怪的字符的表“名称”和“描述”,那么一切都在运行。我可以对数组进行编码然后使用它。
我试过了 $pdo->quote($data[name]) 和 $pdo->quote($data[描述]) ,转义完成了,但问题没有解决..json仍然被那些奇怪的字符搞砸了。
知道会发生什么吗?
【问题讨论】:
-
你能谈谈你正在使用的字符编码吗(什么是“幽灵”字符?你是否在数据库列、数据库连接和应用程序中使用通用编码?
quote()方法是真的与字符编码问题无关。 -
我的数据库列排序为 latin1_swedish_ci。我也尝试了 utf8_general_ci 但没有任何改变。我不使用其他任何东西。
-
我读到 quote() 是为了转义,我认为我的数据的描述/名称中有一些文本会弄乱 json 架构
-
诡异字符示例 1:'ÃŽnvaţă să
-
那是一个 UTF-8 被插入到 latin1 列中吗?我猜我在说什么,您的角色数据可能存在潜在问题。如果您希望使用 UTF-8(这对 JSON 很好)。您需要确保为此设置了整个应用程序。您的数据库连接使用正确的编码,表和/或列使用正确的编码,PHP 读取/写入数据库使用正确的编码,等等。
标签: php mysql json pdo escaping