PHP在MySql的结果中返回符号而不是scandics-尽管我使用的是setcharset“latin1”

PHP在MySql的结果中返回符号而不是scandics-尽管我使用的是setcharset“latin1”,php,mysql,mysqli,character-encoding,Php,Mysql,Mysqli,Character Encoding,我有以下代码: $conn = new mysqli($servername, $username, $password, $dbname); if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } mysqli_set_charset($conn,'latin1_swedish_ci'); echo mysqli_character_set_nam

我有以下代码:

$conn = new mysqli($servername, $username, $password, $dbname);

if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

mysqli_set_charset($conn,'latin1_swedish_ci');

echo mysqli_character_set_name($conn);

$sql = "SELECT * FROM ggg";

$result = $conn->query($sql);

if ($result->num_rows > 0) {

  while($row = $result->fetch_assoc()) {

    echo "keyword: " . $row["keyword"]. " - Name: " . $row["firstname"]. " " . $row["lastname"] . $row["info"] . "<br>";
    
  }
} else {
  echo "0 results";
}
回音结果中的$row[info]部分在矩形内充满问号,而不是瑞典符号å,ä,ö。虽然字符集被正确设置为latin1_swedish_ci,这与我从phpMyAdmin检查的数据库中的字符集完全相同


下一步要尝试什么,有人有什么想法吗?

首先,您可能想使用utf8或utf8mb4,除非您有理由不这样做

我的猜测是,您看到的并不是来自数据库的问题,而是来自浏览器中的渲染,而浏览器不知道如何显示您提供的内容

您可以使用扩展验证chrome浏览器中是否存在这种情况,或者以其他方式验证其他浏览器中是否存在这种情况


或者,用HTML设置文档标题,这样浏览器就不必猜测:

您可以在这里使用这些答案中的一些-是的-这些答案正好使用我在代码中使用的mysqli\u set\u字符集。请注意,我也在回显set字符集-只是为了检查它是否正确设置,实际上是这样。尽管如此,结果还是充满了问号符号,这是因为页面一开始就不支持unicode。若您有原因不能将数据库转换为某些受支持的utf8,如utf8\u general\u ci。另一方面,尝试在php脚本的开头添加utf8头,例如:头的内容类型:text/html;字符集=utf-8';你的文本在数据库中有某种编码,不管是哪种编码。您将连接编码设置为某种编码,这里是latin1_swedish_ci,我不确定它是否真的有效,因为它是一种排序规则;只要拉丁语1就行了。因此,您可以从数据库中以所述连接编码获取文本。然后将其发送到浏览器。浏览器如何解释它取决于您是否设置了显式HTTP内容类型头和/或HTML元标记。在这条链上的某个地方有些不对劲。请参阅中的问号,它有助于将整个数据库排序规则更改为utf-8,然后我认为当我尝试更改字符集时出现了一些问题-我使用了太长的代码,并且由于没有错误消息,我认为一切都很好。我检查了代码并使用utf8mb4,然后它开始工作。呸,编码有这么奇怪的问题。