我试图用doctrine(在symfony2中)保存到字符串字段(mysql数据库)中:
$blogpost->setTitle = "Test !§$%&/()=? äöü ÄÖÜ :D";
$em = $this->getDoctrine()->getManager();
$em->persist($blogpost);
$em->flush();
但它节省了我:“测试!” (其余的都没有了)
实体是:
/**
* @ORM\Column(type="string")
*/
protected $Title;
mysql数据库是utf8_general_ci。
(当我用phpmyadmin手动添加实体时,它可以正常工作。)
我需要有德国变形金刚。希望你能帮助我。
答案 0 :(得分:3)
您必须为实体管理连接字符串设置编码:
doctrine:
dbal:
driver: %database_driver%
host: %database_host%
port: %database_port%
dbname: %database_name%
user: %database_user%
password: %database_password%
charset: UTF8
这样,您可以在数据库的所有列中包含UTF8字符。
答案 1 :(得分:2)
在此文件vendor/doctrine/dbal/lib/Doctrine/DBAL/Platforms/MySqlPlatform.php
他们有
if ( ! isset($options['collate'])) {
$options['collate'] = 'utf8_unicode_ci';
}
尝试将其更改为utf8_general_ci
另请看这里