1

我已经搜索了所有相关资源,但似乎无法弄清楚这一点。我的数据库采用 utf8_unicode_ci 排序规则,因此我以 UTF8 格式保存了所有源文件。但是当数据返回到视图文件时,它会被扭曲。

但是,当我使用与数据库中使用的相同语言对模型文件和视图文件中的文本进行硬编码时,它会显示文本而不会出现任何故障。所以它绝对不是我的源文件编码类型的问题。我得到这样一个扭曲的文本:

†Þ§Þ‡Þ¨Þ‡Þ¬Þ†Þª Þ†Þ¬Þ‰Þ°Þ•Þ¬Þ‡Þ¨'

抱歉,我是 MMVC 和 Zend 的新手。任何帮助将不胜感激。

4

1 回答 1

1

首先检查你的配置Zend\Db\Adapter\Adapter。这应该包括将 DB 设置为 UTF8 命名约定的潜水员选项:

<?php
return array(
    'db' => array(
        'driver'         => 'Pdo',
        'dsn'            => 'mysql:dbname=zf2tutorial;host=localhost',
        'driver_options' => array(
            PDO::MYSQL_ATTR_INIT_COMMAND => 'SET NAMES \'UTF8\''
        ),
    ),
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter' => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
);

另一个潜在的错误来源是 PHP-Webserver。Web 服务器确实可以选择发送 charset-header 以覆盖您所做的一切。为了解决这个问题,您必须在 PHP 脚本中设置标题:

//index.php
header("Content-Type: text/html; charset=utf-8");

有了这个,每个浏览器都应该正确地呈现你的东西。但为了使事情整体完整,您还可以将元标记设置为您的 HTML 模板:

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

或等效的 HTML5

<meta charset="utf-8" />

有了这个,你可以很确定你想要的字符集会被渲染;)

于 2013-06-16T07:17:18.380 回答