我最近将数据库的内容从一台主机移到了另一台主机。在那之后我得到了奇怪的字符,比如两个菱形或菱形,里面有问号而不是瑞典字符 ä
。
我之前在第一台主机上遇到过这个问题,然后我添加了这段代码,它工作正常
$query1 = "SET character_set_results = 'utf8', character_set_client = 'utf8', character_set_connection = 'utf8', character_set_database = 'utf8', character_set_server = 'utf8'";
$query2 = "SELECT * FROM arkitekturobjekt2 WHERE filnamn='{$namn}';";
$result = $db->query($query1);
$result = $db->query($query2);
如果我删除带有 $query1
的行,我只会得到一个菱形。我该如何解决这个问题?
编辑:
这是我的代码,这里是将字符串与数据库中的内容放在一起的循环。我测试了在 ($row->byggnadstyp)
周围使用 utf8_encode(string)
但后来我得到了其他奇怪的字符。但最后我测试删除 strtolower
然后它是完美的,除了第一个字符不小。但我可以接受,但我很想知道为什么我在使用 strtolower
时会得到这些钻石。我在任何地方都使用 utf8
,文件设置为没有 BOM 的 utf8。
$buildingInfo .= "<p>Byggnadstyp: " . strtolower ($row->byggnadstyp) . "</p>";
最佳答案
您可以尝试将此添加到您的 mysql 配置中:
[client]
default-character-set=utf8
[mysql]
default-character-set=utf8
[mysqld]
default-character-set = utf8
collation-server = utf8_general_ci
init-connect='SET NAMES utf8'
character-set-server = utf8
skip-character-set-client-handshake=1
可能不需要最后一行 (skip-character-set-client-handshake=1)。
如果您无权访问配置文件,您可以查看此 help page .基本上归结为发送命令
SET NAMES 'UTF8';
在连接的开始。然而,这与您已经执行的操作类似。
关于php - MySQL 中带有问号而不是瑞典字符的菱形/菱形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31365728/