我有一个应用程序,我正在尝试Doctrine2。我有一个配置类型为InnoDB和collation utf8_unicode_ci的数据库。然后我有一个包含两列的简单表:id(整数)和name(字符串)。
我使用phpmyadmin在表格中输入一行,然后使用以下代码从数据库中读取信息:
$serializer = JMS\Serializer\SerializerBuilder::create()->build();
$county = $entityManager->find('County', 1);
$jsonContent = $serializer->serialize($county, 'json');
我使用的序列化程序来自http://jmsyst.com/libs/serializer。
我的县实体档案如下:
<?php
use Doctrine\ORM\Mapping as ORM;
// src/County.php
/** @ORM\Entity **/
class County
{
/** @ORM\Id @ORM\Column(type="integer") **/
protected $id;
/** @ORM\Column(type="string") * */
protected $name;
public function getId()
{
return $this->id;
}
public function setId($id)
{
$this->id = $id;
}
public function getName()
{
return $this->name;
}
public function setName($name)
{
$this->name = $name;
}
}
当我尝试在没有瑞典语字符的行上运行它时,一切正常,但如果我通过Phpmyadmin输入瑞典字符'ä'并尝试读取该行,则会出现以下异常:
致命错误:未捕获的异常'RuntimeException',消息'你的 数据无法编码,因为它包含无效的UTF8 字符“。在 C:\ WAMP \ WWW \原则\供应商\ JMS \串行的\ src \ JMS \串行\ JsonSerializationVisitor.php 在第36行
有关我做错的任何提示?我认为这应该有用。
答案 0 :(得分:0)
我明白了。我将charset添加到连接对象然后它可以工作。
$conn = array(
'driver' => 'pdo_mysql',
'dbname' => 'doctrine',
'user' => 'doctrine',
'password' => 'doctrine',
'host' => 'localhost',
'charset' => 'UTF8'
);