在使用JavaScript时,我在哪里设置我的字符集,PHP& MySQL的

时间:2010-12-07 23:57:11

标签: php javascript mysql html character-encoding

我正在尝试使用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中显示值时,它似乎仍然是错误的编码。知道我错过了什么吗?

2 个答案:

答案 0 :(得分:0)

您是否可以使用PHPMyAdmin等数据库浏览器验证数据是否正确存储?尝试事先执行这两个查询:

SET NAMES utf8
SET CHARACTER SET utf8

答案 1 :(得分:0)

很抱歉浪费每个人的时间......我终于找到了问题的答案!在将JSON保存到数据库之前,我一直在JavaScript中使用escape()。显然这只适用于ASCII,而且应该使用encodeURIComponent()代替。现在它有效!