我正在尝试使用UTF-8,但我不确定我是否正确地做了一切。我正在尝试使用PHP将JSON写入数据库,通过AJAX检索它,并以HTML格式显示它。
所以,首先,我保存我的PHP& UTF-8格式的JS文件 我将UTF-8标头添加到我的PHP文件中 数据库表创建如下:
CREATE TABLE `achieve` (
`id` bigint(20) unsigned NOT NULL,
`json` mediumtext,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
保存到数据库时,我使用以下PHP代码:
$json=$_REQUEST["json"];
...
$result = mysql_query($query);
if ($line = mysql_fetch_assoc($result))
$query = sprintf(
'UPDATE achieve SET json = "%s" WHERE id=%d ',
mysql_real_escape_string($json), $ID
);
else
$query = sprintf(
'INSERT INTO achieve (id, json) VALUES (%d, "%s") ',
$FBID, mysql_real_escape_string($json)
);
mysql_query($query);
当我在HTML中显示值时,它似乎仍然是错误的编码。知道我错过了什么吗?
答案 0 :(得分:0)
您是否可以使用PHPMyAdmin等数据库浏览器验证数据是否正确存储?尝试事先执行这两个查询:
SET NAMES utf8
SET CHARACTER SET utf8
答案 1 :(得分:0)
很抱歉浪费每个人的时间......我终于找到了问题的答案!在将JSON保存到数据库之前,我一直在JavaScript中使用escape()。显然这只适用于ASCII,而且应该使用encodeURIComponent()代替。现在它有效!