[英]UTF-8 Zend Framework and Doctrine 2
使用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;
非常感谢您的帮助。
谢谢。
大约6个月前,我遇到了同样的问题,我通过在
resources.db.params.charset =“ utf8”
可以帮助您...
我也为此付出了很长的时间,但找到了适合我的情况的解决方案。 您必须将EventSubscriber添加到EntityManager。
$entityManager = \Doctrine\ORM\EntityManager::create( $conn, $config );
$entityManager->getEventManager()
->addEventSubscriber(
new \Doctrine\DBAL\Event\Listeners\MysqlSessionInit('utf8', 'utf8_unicode_ci')
);
希望这会对您有所帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.