gpt4 book ai didi

php - UTF-8 给了我问号

转载 作者:可可西里 更新时间:2023-11-01 08:49:57 24 4
gpt4 key购买 nike

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

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

  • 创建了一个以 UTF-8 编码的数据库和表,排序规则为 utf8_unicode_ci
  • 将我的 PHP 文件编码为 UTF-8
  • 将元字符集设置为 UTF-8
  • 在 Lighty (Lighttpd) 中通过 create-mime.assign.pl 将所有文本 mime-types 设置为 UTF-8。<

现在,当我从数据库中检索包含 öü 等字符的数据时,问题就出现了。如果我只是执行 echo "ö"; 没有从数据库中检索它,它工作正常。我想那数据库一定有问题吧?

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

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

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

最佳答案

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

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

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

您也可以(或同样)使用

query("SET NAMES utf8");   

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

关于php - UTF-8 给了我问号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16151061/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com