首先检查你的配置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" />
有了这个,你可以很确定你想要的字符集会被渲染;)