在unicode中输入数据库中的值

时间:2011-04-30 14:25:44

标签: php mysql

我想使用PHP在我的数据库中以印地语Unicode格式保存数据。我在我的数据库连接页面添加了几行代码。

mysql_query('SET character_set_results=utf8');
mysql_query('SET names=utf8');
mysql_query('SET character_set_client=utf8');
mysql_query('SET character_set_connection=utf8');
mysql_query('SET character_set_results=utf8');
mysql_query('SET collation_connection=utf8_general_ci');

此外,我已将此行添加到我输入的页面,并将我的Unicode数据显示到其head属性

<meta http-equiv="Content-Type" content="text/html;charset=UTF-8">

但是我的数据在数据库中存储为'?????'并以相同的格式显示。甚至我的新行字符也被跳过,因为数据以单行显示。

4 个答案:

答案 0 :(得分:4)

我怀疑您的数据库使用的是不同的字符集。确保使用以下命令创建数据库:

create database something         -- or 'alter database something' in case it exists
default character set utf8
default collate utf8_general_ci

目前您只是告诉您的查询以UTF-8编码,但您的数据库可能仍在使用不同的字符集。

另外,请确保您实际正确输出这些数据,并以UTF-8编码。

答案 1 :(得分:1)

您可以使用mysql_client_encoding从该页面检查数据库的编码:

$link    = mysql_connect('localhost', 'mysql_user', 'mysql_password');
$charset = mysql_client_encoding($link);
echo "The current character set is: $charset";

编码可能不是utf8,但您可以使用命令行中的mysql或像phpMyAdmin这样的工具来更改它。

另请注意,根据php手册,mysql_set_charset比使用查询设置字符集更受欢迎。

答案 2 :(得分:0)

AFAIK SET names=utf8不正确,应为SET NAMES 'utf8'

答案 3 :(得分:0)

更常见的原因是Header内容类型。

如果apache发送标题内容类型,则其优先级高于元html。

header('Content-Type: text/html; charset=utf-8');