Zend框架2字符转换为不可读的格式

时间:2013-06-15 20:43:14

标签: encoding zend-framework2 character

我搜索了所有相关资源,似乎无法想出这一点。我的数据库是在utf8_unicode_ci排序规则中,因此我以UTF8格式保存了所有源文件。但是当数据返回到视图文件时,它会失真。

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

  

†Þ§Þ‡Þ¨Þ‡Þ¬Þ†ÞªÞÞÞÞÞÞÞÞÞÞÞÞÞÞ''

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

1 个答案:

答案 0 :(得分:1)

首先检查configuration of your 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" />

有了这个,你可以非常确定你想要的字符集将被呈现;)