2010-12-07 26 views
2

我想使用UTF-8,但我不知道如果我正确地做一切。我正在尝试使用PHP将JSON写入数据库,通过AJAX检索它并将其显示为HTML。我在哪里设置我的字符集,当使用JavaScript,PHP和MySQL

因此,首先,我将我的PHP文件保存为UTF-8格式。
我将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值时,它似乎仍然是错误的编码。任何想法我失踪?

+1

http://developer.loftdigital.com/blog/php-utf-8-cheatsheet – BalusC 2010-12-08 00:03:45

回答

0

对不起浪费大家的时间在这里...我终于想出了我的问题的答案!在将我的JSON保存到数据库之前,我一直在使用JavaScript中的escape()。显然这只适用于ASCII,而且应该使用encodeURIComponent()来代替。现在它工作了!

0

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

SET NAMES utf8 
SET CHARACTER SET utf8 
+0

这似乎没有改变任何东西。 – 2010-12-08 00:07:39

相关问题