我搜索了所有相关资源,似乎无法想出这一点。我的数据库是在utf8_unicode_ci排序规则中,因此我以UTF8格式保存了所有源文件。但是当数据返回到视图文件时,它会失真。
但是,当我在模型文件和视图文件中硬编码文本时,使用与数据库中使用的语言相同的语言,它会显示文本而不会出现任何故障。所以它绝对不是我的源文件编码类型的问题。我得到了一个扭曲的文本:
†Þ§Þ‡Þ¨Þ‡Þ¬Þ†ÞªÞÞÞÞÞÞÞÞÞÞÞÞÞÞ''
很抱歉,我是MMVC和Zend的全新手。任何帮助将不胜感激。
答案 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" />
有了这个,你可以非常确定你想要的字符集将被呈现;)