3

我有这个简单的 PHP 脚本,它搜索 mySQL 数据库并将结果输出给用户。我曾经ISO-8859-1用作我的字符集,但被建议使用UTF-8. 但是我很难从以前的字符集转到新的字符集。

为了澄清一些事情,我有:

  • 创建了一个UTF-8用 collat​​ion编码的数据库和表utf8_unicode_ci
  • 将我的 PHP 文件编码为UTF-8.
  • 将元字符集设置为UTF-8.
  • 在 Lighty (Lighttpd) 中将所有文本设置mime-typesUTF-8直通。create-mime.assign.pl

ö现在,当我从数据库中检索带有等字符的数据时,问题就出现了ü。如果我只是不echo "ö";从数据库中检索它,它就可以正常工作。那我猜数据库肯定有问题?

我尝试了以下方法,他们解决了我的问题:

  • 将元字符集设置为ISO-8859-1(由于某种奇怪的原因有效,但会破坏回显的“ö”)。
  • utf8_decode()围绕输出设置一个函数。
  • mysql_select_db()声明如下mysql_set_charset('utf8');

我知道我找到了多种解决方案,但我只是不知道为什么没有它们就行不通?utf8_decode()在输出或mysql_set_charset()函数上使用是不好的做法吗?

4

1 回答 1

1

MySQL 使用 UTF8 很有趣。您需要确保服务器以 UTF 运行并且连接也是如此

如果您可以修改服务器上的 my.cnf 文件,则可以将它们添加到 [mysqld] 部分并重新启动它

character-set-server = utf8
skip-character-set-client-handshake

您可以选择(或也)使用

query("SET NAMES utf8");   

在发送/检索数据以确保数据库期望传递 UTF8 数据之前

于 2013-04-22T15:43:35.097 回答