Mysql 在ZF2中以utf-8的形式从数据库检索数据
我正在尝试使用Zend Frameword 2确保从数据库接收到的数据是utf-8格式的。 为此,我用utf-8编码了我的php文件,并将meta字符集设置为utf-8(以确保页面上显示的内容是utf-8) 我还尝试将适配器的字符集设置为utf-8,但它似乎对数据没有任何影响。 我尝试了很多方法:Mysql 在ZF2中以utf-8的形式从数据库检索数据,mysql,utf-8,character-encoding,zend-framework2,Mysql,Utf 8,Character Encoding,Zend Framework2,我正在尝试使用Zend Frameword 2确保从数据库接收到的数据是utf-8格式的。 为此,我用utf-8编码了我的php文件,并将meta字符集设置为utf-8(以确保页面上显示的内容是utf-8) 我还尝试将适配器的字符集设置为utf-8,但它似乎对数据没有任何影响。 我尝试了很多方法: $adapter = new Adapter(array( 'driver' => 'pdo_mysql', 'database' => $databa
$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>';?>
直接写入页面的数据以及从控制器传递到页面的其他变量的编码正确,但从数据库检索到的数据显示?特殊字符的位置。
如果我使用utf8_encode(),它们将正确显示,因此我假设从数据库中提取数据时未对其进行编码
有人有主意吗?只需像这样进行全局配置即可
只需按如下方式进行全局配置
您的数据库是否以utf8格式存储数据?运行mysql>显示表格状态;查看排序规则列的内容我已将我所有表的排序规则设置为utf8\u general\u ci。您的数据库是否以utf8格式存储数据?运行mysql>显示表格状态;查看排序规则列的内容我已经为我的所有表将排序规则设置为utf8\u general\u ci。
return array(
'db' => array(
'driver' => 'Pdo',
'dsn' => 'mysql:dbname=singclub;host=localhost;',
'username' => 'root',
'password' => '',
'driver_options' => array(
PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES UTF8"
),
),
);