1

クエリを作成してデータをフェッチするときに自動的に iconv() を実行するように Doctrine を設定するにはどうすればよいですか?

4

3 に答える 3

1

ええと、人生で文字セット変換の問題に直面する必要がなくなり、UTF8 以外のすべての文字セットがすぐに過去のものになることを願っています。とにかく、私自身の質問にフィードバックを与えるだけです。Record ハイドレーターを拡張するカスタム ハイドレーターを作成し、次のように Filter 基本クラスの symfony の proccessValues メソッドをオーバーライドすることで解決しました。

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 に答える
1

データを UTF-8 で送信するために使用している RDBMS に伝えてみませんか? Doctrine_ConnectionこれにはsetCharsetメソッドがあります:

$connection->setCharset('utf8');
于 2010-07-30T13:30:48.263 に答える
0

setCollation()対応するものです。

于 2010-07-31T06:21:21.173 に答える