gpt4 book ai didi

mysql - 在 ZF2 中以 utf-8 格式从数据库中检索数据

转载 作者:行者123 更新时间:2023-11-29 00:28:22 26 4
gpt4 key购买 nike

我正在尝试使用 Zend Frameword 2 确保从我的数据库接收到的数据是 utf-8 格式。为此,我将我的 php 文件编码为 utf-8,并将元字符集设置为 utf-8(以确保页面上显示的内容是 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;
}
}

我使用以下方法在我的 Controller 中传递数据:

$view->setVariable('arAudios', $arAudios);

然后我使用 print_r 在 View 中打印数据:

<?php echo '<pre>'; print_r($arAudios); echo '</pre>';?>

直接写在页面上的数据以及从 Controller 传递给页面的其他变量编码正确,但从数据库中检索的数据显示?特殊字符应该在哪里。 如果我使用 utf8_encode(),它们会正确显示,所以我假设从数据库中获取数据时没有编码。

有人有想法吗?

最佳答案

只需像这样进行全局配置

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"
),
),
);

关于mysql - 在 ZF2 中以 utf-8 格式从数据库中检索数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17844859/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com