繁体   English   中英

Charset UTF-8和php header()无效

[英]Charset UTF-8 and php header() not working

我的网站上有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

知道它可能是什么?

  • 在任何输出到浏览器之前设置PHP header标签(正如JJ Cantillon所指出的那样)

  • 虽然PHP和HTML使用正确的UTF-8,但值得注意的是MySQL使用简化版的UTF-8,因此在选择数据库表/字段的排序时,“utf8_general_ci”(和类似的) 不是完整的字符集因此,您要显示的字符将无法正确存储。

您需要做的是确保MySQL通过选择使用完整的UTF-8字符集

排序规则='utf8mb4'

此外,当您将脚本连接到数据库时,您需要为PHP / MySQL通信指定相同的( utf8mb4 )字符集 - 所以设置类似(就MySQLi或PDO等而言)

new PDO('mysql:host=localhost;charset=utf8mb4')  

或者在http://php.net/manual/en/mysqli.set-charset.php上阅读MySQLi

如果您将数据作为utf8mb4存储在SQL中,但仅使用标准MySQL-utf8(3字节而不是4字节)传输数据,那么字符集将在传输中被搞砸。

阅读: https//stackoverflow.com/a/16893103/3536236

在输出任何html之前,您需要设置标题。

尝试在第一个HTML标记之前设置标题。 例如:

<?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>

经过大量搜索后,我遇到了以下问题。 在数据库连接中,我必须指定我想要UTF-8字符集。 我是通过以下方式做到的:

$db = new PDO('mysql:host=localhost;dbname=NAME;charset=utf8', 'USERNAME', 'PASSWORD');

它必须是导致问题的主机的服务器更新,因为我之前没有受到此问题的影响。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM