【发布时间】:2011-10-16 23:00:40
【问题描述】:
使用 Doctrine 从数据库中查询 UTF-8 字符时,我无法正确显示它们。我已经尝试了我在互联网上可以找到的所有内容(例如:setCharset 似乎是最好的选择)。如果我直接从 PHP 打印 UTF-8 字符,它们会正确显示,所以输出到浏览器不是问题。这是我的配置:
application.ini
doctrine.conn.host = 'localhost'
doctrine.conn.user = 'someuser'
doctrine.conn.pass = 'somepass'
doctrine.conn.driver = 'pdo_mysql'
doctrine.conn.dbname = 'zoo'
doctrine.path.models = APPLICATION_PATH "/models"
教义的引导方法
$classLoader = new \Doctrine\Common\ClassLoader(
'Doctrine',
APPLICATION_PATH . '/../library/'
);
$classLoader->register();
$config = new \Doctrine\ORM\Configuration();
$cache = new \Doctrine\Common\Cache\ArrayCache();
$config->setMetadataCacheImpl( $cache );
$config->setQueryCacheImpl( $cache );
$driver = $config->newDefaultAnnotationDriver(
APPLICATION_PATH . '/models'
);
$config->setMetadataDriverImpl( $driver );
$config->setProxyDir( APPLICATION_PATH . '/models/Proxies' );
$config->setAutoGenerateProxyClasses( true );
$config->setProxyNamespace( 'App\Proxies' );
$connectionSettings = $this->getOption( 'doctrine' );
$conn = array(
'driver' => $connectionSettings['conn']['driver'],
'user' => $connectionSettings['conn']['user'],
'password' => $connectionSettings['conn']['pass'],
'dbname' => $connectionSettings['conn']['dbname'],
'host' => $connectionSettings['conn']['host'],
);
$entityManager = \Doctrine\ORM\EntityManager::create( $conn, $config );
$entityManager->getConnection()->setCharset('utf8');
$registry = Zend_Registry::getInstance();
$registry->entityManager = $entityManager;
return $entityManager;
非常感谢任何帮助。
谢谢。
【问题讨论】:
-
您的数据库表/列是否使用 unicode 字符集/排序规则?
标签: php mysql zend-framework utf-8 doctrine-orm