php - MySQL 中带有问号而不是瑞典字符的菱形/菱形

标签 php mysql

我最近将数据库的内容从一台主机移到了另一台主机。在那之后我得到了奇怪的字符,比如两个菱形或菱形,里面有问号而不是瑞典字符 ä

我之前在第一台主机上遇到过这个问题,然后我添加了这段代码,它工作正常

$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/

相关文章:

php file_exists 返回 false 即使我的 linux 上存在文件

php - NoCaptcha 返回错误 invalid-json

mysql - 快速选择/加入 MySQL 存储引擎?

PHP/HTML 表无法正常运行

mysql - 查看是否存在两个表行,内部连接到另一行

php - 删除照片脚本在 php 和 mysql 中出现错误

php - Amazon S3 - 如何检查预签名 URL 是否过期?

php - 验证器 - 返回所有错误消息

php - MYSQL 触发器不工作。不知道为什么

sql - 如何使mysql结构的up,down rating