我有这个简单的 PHP 脚本,它搜索 mySQL 数据库并将结果输出给用户。我曾经ISO-8859-1
用作我的字符集,但被建议使用UTF-8
. 但是我很难从以前的字符集转到新的字符集。
为了澄清一些事情,我有:
- 创建了一个
UTF-8
用 collation编码的数据库和表utf8_unicode_ci
。 - 将我的 PHP 文件编码为
UTF-8
. - 将元字符集设置为
UTF-8
. - 在 Lighty (Lighttpd) 中将所有文本设置
mime-types
为UTF-8
直通。create-mime.assign.pl
ö
现在,当我从数据库中检索带有等字符的数据时,问题就出现了ü
。如果我只是不echo "ö";
从数据库中检索它,它就可以正常工作。那我猜数据库肯定有问题?
我尝试了以下方法,他们解决了我的问题:
- 将元字符集设置为
ISO-8859-1
(由于某种奇怪的原因有效,但会破坏回显的“ö”)。 utf8_decode()
围绕输出设置一个函数。- 后
mysql_select_db()
声明如下mysql_set_charset('utf8');
。
我知道我找到了多种解决方案,但我只是不知道为什么没有它们就行不通?utf8_decode()
在输出或mysql_set_charset()
函数上使用是不好的做法吗?