0

我有一个数据库问题,我无法理解。我来自丹麦,用 PHP 和 MySQL 制作了一个注册系统。现在......我已经分别制作了两张桌子。

table1当我通过 PHP 从数据库中查询它们时,其中一张表(我们称之为)很好地显示了我心爱的丹麦字母 (æøå)。但是当我去 phpMyAdmin 时,字母会奇怪地显示出来......例如:它在 phpMyAdmin 中看起来像这样:

Bjørn (which is Bjørn)

但是同样,当我使用 a 从数据库中获取它们时mysql_query('SELECT * FROM $tablename'),它会显示为“Bjørn”(应该如此)。

现在问题...

在另一个表中(我们称之为table2),然后在 phpMyAdmin 中,“Bjørn”显示为“Bjørn”(看起来是正确的)。但是当我将它拉入 PHP 时,mysql_query('SELECT * FROM $tablename')它会显示为“Bj?rn”。所有字母“æøå”都显示为“?”。

我试着做一个SHOW TABLE STATUS,它表明排序规则是一样的。

table1中,则变量为VARCHAR(255),而在 中table2,变量为TEXT

两个表都是这样创建的:

CREATE TABLE >>tablename<< ( bla bla bla ) CHARSET=UTF8 
4

2 回答 2

2

你应该像这样连接mysql

$link = mysql_connect('localhost', 'user', 'password');
mysql_set_charset('utf8',$link);

然后尝试执行它正确获取的查询

这里的问题是,您还应该在连接到 DB 时指定字符集。

即使在存储时,如果您没有在与 utf8 的连接中设置字符集,您的插入也会被乱码,因此请验证您是否在连接到 DB 时进行了这样的设置。

希望这可以帮助

最后但并非最不重要的一点是,在浏览器中显示时,您还应该在将数据从 DB 转储到浏览器时设置 html 标头,如下所示

<?php 
 header('Content-type: text/html; charset=utf-8'); 
?>
于 2013-04-12T15:51:19.923 回答
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
于 2013-04-12T15:55:47.053 回答