我有一个数据库问题,我无法理解。我来自丹麦,并在PHP和MySQL中建立了一个注册系统。现在......我已经单独制作了两张桌子。
当我通过PHP从数据库中查询时,其中一个表(我们称之为table1
)显示我心爱的丹麦字母(æøå)就好了。但是当我去phpMyAdmin时,那些字母显示得很奇怪...例如:它在phpMyAdmin中看起来像这样:
Bjørn (which is Bjørn)
但是,当我从数据库中使用mysql_query('SELECT * FROM $tablename')
获取它们时,它再次显示为“Bjørn”(应该如此)。
现在问题......
在另一个表格中(我们称之为table
2),然后在phpMyAdmin中'Bjørn'显示为'Bjørn'(看似正确)。但是当我用mysql_query('SELECT * FROM $tablename')
将它拉入PHP时,它会显示为'Bj?rn'。所有字母'æøå'都显示为'?'。
我尝试了SHOW TABLE STATUS
,它表明整理是一样的。
在table1
中,变量为VARCHAR(255)
,而在table2
中,变量为TEXT
。
这两个表都是这样创建的:
CREATE TABLE >>tablename<< ( bla bla bla ) CHARSET=UTF8
答案 0 :(得分:2)
你应该像这样连接mysql
$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);
然后尝试执行正确获取的查询
这里的问题是,您还应该在连接到DB时指定字符集。
即使在存储时,如果你没有在与utf8的连接中设置字符集,你的插入也会变成乱码,所以在连接到DB时是否确认是否设置了这样的字符串。
希望这有帮助
同样最后但并非最不重要的是,在浏览器中显示时,您应该在将数据从数据库转储到浏览器时设置html标头,如下所示
<?php
header('Content-type: text/html; charset=utf-8');
?>
答案 1 :(得分:1)
我不知道phpmyadmin有什么问题,但在我自己的编程中我做了以下事情:
PHP(在其他任何事情之前):
header("Content-Type: text/html; charset=utf-8");
HTML:
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
数据库查询:
SET CHARACTER SET utf8;
或者如果使用PDO我的dsn看起来像:
mysql:dbname=mydb;host=localhost;charset=utf8