我的网站上有charset的问题。我不能让UTF-8字符集工作,我得到 而不是Å。是的,我在网上搜索了答案,我已经使用了以下代码:
<!DOCTYPE HTML>
<head>
<?php header('Content-type: text/html; charset=utf-8'); ?>
<meta http-equiv="Content-Type" content="text/html" charset=utf-8" />
<title><?php echo $db_title; ?></title>
</head>
<body>
Some content with letters æøå
</body>
</html>
数据库使用latin1_swedish_ci
。
知道它可能是什么吗?
答案 0 :(得分:1)
在向浏览器输出任何内容之前设置PHP header
标记(正如JJ Cantillon所指出的)
虽然PHP和HTML使用正确的UTF-8,但值得注意的是MySQL使用简化版的UTF-8,因此在选择数据库表/字段的排序时,“utf8_general_ci”(及类似) ) 不 完整字符集,因此您要显示的字符将无法正确存储。
您需要做的是确保MySQL通过选择
来使用完整的UTF-8字符集Collation ='utf8mb4'
此外,当您将脚本连接到数据库时,您需要为PHP / MySQL通信指定相同的(utf8mb4
)字符集 - 所以设置类似(就MySQLi或PDO等而言)
new PDO('mysql:host=localhost;charset=utf8mb4')
或MySQLi阅读http://php.net/manual/en/mysqli.set-charset.php
如果您将数据存储在SQL中utf8mb4
但仅使用标准MySQL-utf8(3字节而不是4字节)传输数据,那么字符集将在传输中被搞砸。
答案 1 :(得分:0)
在输出任何html之前,您需要设置标题。
尝试在第一个HTML标记之前设置标题。 EG:
<?php header('Content-type: text/html; charset=utf-8'); ?>
<!DOCTYPE HTML>
<head>
<meta http-equiv="Content-Type" content="text/html" charset=utf-8" />
<title><?php echo $db_title; ?></title>
</head>
<body>
Some content with letters æøå
</body>
</html>
答案 2 :(得分:0)
经过大量搜索后,我遇到了以下question.在数据库连接中,我必须指定我想要UTF-8字符集。我是通过以下方式做到的:
$db = new PDO('mysql:host=localhost;dbname=NAME;charset=utf8', 'USERNAME', 'PASSWORD');
它必定是导致问题的主机的服务器更新,因为我之前没有受到此问题的影响。