我一直在努力解决这个问题。我无法让它发挥作用。
在网址http://course.easec.se/problem.pdf上,我已整理了迄今为止所做的工作!
有什么建议吗?
<?php
header('Content-Type: text/html; charset=ISO-8859-1'); //no changes
$servername = "localhost";
$username = "root";
$password = "password";
$dbname = "db_test4";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
mysqli_set_charset("utf8");
echo "From PHP Script ååååå\n"; //to see if there is problem when edit the script
$sql = "SELECT * FROM test_tbl";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo "Kundid: " . $row["kund_id"]. " - Förnamn: " . $row["fnamn"]. " - Efternamn: " . $row["enamn"]. " - Adress:" . $row["adress1"] ."<br>";
}
} else {
echo "0 results";
}
$conn->close();
?>
客户端:
它现在有效,似乎是我的编辑器,当我尝试ANSI而不是UTF-8并将标题更改为!
答案 0 :(得分:3)
直接在
之下 $conn = new mysqli($servername, $username, $password, $dbname);
添加
$conn->set_charset("utf8");
注意:此外,您还应确保HTML的字符集(在<head>
标记中)设置为utf-8
,例如<meta charset="utf-8">
答案 1 :(得分:0)
使用:强>
header('Content-Type: text/html; charset=ISO-8859-1');
代替:
header('Content-type: text/html; charset=utf-8');
不需要在while循环中使用,在打印任何内容之前使用页面顶部。
答案 2 :(得分:0)
我喜欢您在PDF中设置问题的方式,有点原始:-D
。现在,您的问题的答案将是found here。尽可能多地阅读整个问题和尽可能多的答案。
然后作为最后的努力,我将编辑器更改为ANSI而不是UTF-8然后它可以工作!
由于这个问题,您的内部PHP脚本编码使用PHP Multibyte String进行Reaseach并将您的PHP代码设置为:
<?php
mb_internal_encoding('UTF-8'); //this is the important one!
mb_http_output('UTF-8');
mb_http_input('UTF-8');
确保您的PHP代码在执行时也符合UTF-8标准。您还可以(或应该能够)在IDE编辑器中编辑设置以保存没有UTF-8 BOM(字节顺序标记)的PHP文件,这也将解决此问题并将其保存为UTF-8,这是其他服务可以理解的。
附加说明(我喜欢对MySQL UTF-8抱怨):
MySQL UTF-8
不是完整的UTF-8 。解决方案在上面的链接线程中提供,一些常规补充:
1)您希望始终使用UTF8mb4
(理想情况下为_unicode_ci
)。
2)在PDF的最终屏幕截图中,您应该设置尽可能多的utf8mb4_unicode_ci
。
3)设置连接字符集至关重要,即使服务器和客户端都使用utf8mb4
如果连接只有utf-8
它会带来所有内容否则降到那个低点。
4)推荐:
header('Content-Type: text/html; charset=UTF-8'); //UTF-8
只有MySQL UTF-8被破坏,其他的实现不是并且完全可以使用,并且通常被视为HTML标准。