保存我的head.php没有BOM会破坏我变异的元音

时间:2017-03-24 15:22:41

标签: php encoding utf-8

我认为我在与BOM相关的页面整理方面存在严重问题。在用w3验证器检查我的页面后,我在head.php的开头看到了一个BOM显示。问题是,在我将head.php保存在没有BOM的utf-8之后(在它只是utf-8之前)所有页面上的所有输入都搞砸了。更具体地说,变异的元音(äöüß等)现在显示为Ã,Ã,ß等。怎么可能?我实际上已经设置并保存了所有内容到utf-8。

我已将我网站的每个页面保存为utf-8而没有BOM。

我的服务器管理器在FTP服务器上的排序规则设置为“utf-8”。 我的head.php的charset设置为utf-8:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

通过PDO与我的数据库的连接在utf-8中设置:

$dsn = 'mysql:host=' . $this->host . ';dbname=' . $this->dbname . ';charset=utf8';
    // Set options
    $options = array(
        PDO::ATTR_PERSISTENT    => true,
        PDO::ATTR_ERRMODE       => PDO::ERRMODE_EXCEPTION,
        PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"
    );

我的数据库和数据表的排序规则设置为utf8_unicode_ci

有人知道我在这里可以做什么,或者我可以在哪里开始寻找问题?

编辑:我在这里找不到错误。使用纯文本创建了一个简单的.php文件,并将其设置如下:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

并将其保存为“没有BOM的utf-8”。还使用

检查了文本
<?php echo "encoding:". mb_detect_encoding("öäü"); ?>

它说:UTF-8。但是,变异的元音就像¶,Ã,ß......我真的不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我将以下内容添加到我的.htaccess中:

AddDefaultCharset utf-8

现在HTTP-Header正确响应utf-8。最后,变异的元音表现得像他们应该的那样。