如何设置 Doctrine 在构建查询和获取数据时自动运行 iconv()?
问问题
473 次
3 回答
1
您为什么不直接告诉您使用的 RDBMS 以 UTF-8 格式发送数据?Doctrine_Connection
有一个setCharset
方法:
$connection->setCharset('utf8');
于 2010-07-30T13:30:48.263 回答
1
好吧,我希望没有人在他们的生活中不得不面对字符集转换问题,并且除了 UTF8 之外的所有字符集都将很快成为过去。无论如何,只是为了给我自己的问题一些反馈。我通过编写一个扩展 Record hydrator 的自定义 hydrator 并通过覆盖 Filter 基类的一些 symfony prcessValues 方法来解决,如下所示:
abstract class BaseFormFilterDoctrine extends sfFormFilterDoctrine
{
public function setup()
{
}
public function processValues($values)
{
$values = parent::processValues($values);
$charset = strtolower(str_replace('-','',$this->getTable()->getConnection()->getCharset()));
if ($charset != 'utf8')
{
foreach ($values as $key => $value)
{
if (isset($value['text']))
{
$values[$key]['text'] = iconv('utf8', $charset, $value['text']);
}
}
}
return $values;
}
}
于 2010-12-24T13:20:35.653 回答
0
setCollation()
是对应的。
于 2010-07-31T06:21:21.173 回答