1
我试图确保从我的数据库收到的数据是使用Zend Frameword 2在utf-8中。 为此,我将我的php文件编码为utf- 8,我将元字符集设置为utf-8(以确保页面上显示的是utf-8)。从数据库检索ZF2中的数据库为utf-8
我也尝试将我的适配器的字符集设置为utf-8,但它似乎对数据没有任何影响。 我试了很多办法:
$adapter = new Adapter(array(
'driver' => 'pdo_mysql',
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf8'
));
$adapter = new Adapter(array(
'driver' => 'pdo_mysql',
'database' => $database,
'username' => $username,
'password' => $password,
'charset' => 'utf-8'
));
$adapter = new Adapter(array(
'driver' => 'pdo_mysql',
'database' => $database,
'username' => $username,
'password' => $password,
'driverOptions' => array(
1002=>'SET NAMES utf8'
)
));
我取使用TableGateway对象中的数据。我应该在那个对象中指定它是在utf-8中吗? (但我没有看到一个属性在对象这样做)
这是我如何获取数据:
$results = $this->tableGateway->selectWith($select);
if(count($results) > 0){
//this loop transforms each object into an audio
foreach($results as $row){
$data['object'][$row->id] = $row;
}
}
我使用过在我的控制器中的数据:
$view->setVariable('arAudios', $arAudios);
<?php echo '<pre>'; print_r($arAudios); echo '</pre>';?>
直接在页面上写入以及数据:
我然后使用print_r的打印时,在视图中的数据从控制器传递到页面的其他变量编码正确,但从数据库检索到的数据显示?特殊字符应该在哪里。 他们显示正确,如果我使用utf8_encode(),所以我假设数据从数据库中提取时没有编码。
任何人有想法?
全球配置的数据库存储在UTF8的数据?运行mysql> show table status;并查看排序规则列的说明 –
我已将排序规则设置为UTF8_general_ci,适用于我的所有表格。 – ether