mysql - Symfony2 - 在 json 响应中从我的数据库 MySQL 更改字符

标签 mysql sql json symfony doctrine-orm

我正在开发一个使用 Symfony 和 MySQL 作为数据库的网络应用程序。我的数据库创建语法如下:

CREATE DATABASE `mydb` DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci;

我需要知道为什么会返回意外文本的表是:

CREATE TABLE `elements` (
    `id` int(11) NOT NULL AUTO_INCREMENT,
    `name` varchar(100) COLLATE utf8_unicode_ci NOT NULL
)ENGINE=InnoDB AUTO_INCREMENT=132 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;

而PHP中的实体代码是:

/**
 * 
 *
 * @ORM\Table(name="elements")
 * @ORM\Entity()
 */
class Element
{
    /**
     * @var integer
     *
     * @ORM\Column(name="id", type="integer")
     * @ORM\Id
     * @ORM\GeneratedValue(strategy="AUTO")
     */
    private $id;

    /**
     * @var string
     *
     * @ORM\Column(name="name", type="string", length=100)
     */
    private $name;
}

当元素的名称包含西类牙语字符,如 á,é,í,ó,ú,ñ;在浏览器中正确呈现,并且在数据库中字符以这种方式存储,但是当我尝试使用 JsonResponse 返回此信息时,字符被转换为其他代码。例如:

$result['id']       = $e->getId();
$result['name']     = $e->getName();

return new JsonResponse( array('response' => $result) );

响应显示:

"response":{
    "id":26,
    "name":"Avi\u00f3n"
}

名称应该改为“Avión”。

我想知道为什么会发生这种情况以及如何避免这种行为。 有什么想法吗?

提前致谢。

最佳答案

我在这里没有看到实际问题。

它们 转换为其他代码

相反,它们是 utf-8 编码(默认 JSON 编码)。

一些信息:RFC4627 2.5节字符串

\u00F3 是utf-8编码的字符ó,见here

更新:

读这个:JSON Encoding and decoding of UTF8 characters in PHP

关于mysql - Symfony2 - 在 json 响应中从我的数据库 MySQL 更改字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23656471/

相关文章:

php - MySQL查询排序

java - 如何在 MyBatis3 中使用 @SelectProvider 类中的 <foreach> 语句

php - 从 3 个不同的 mysql 表中选择数据

javascript - 如何从服务器发送和接收数据: python/flask/ajax/json GET POST requests

MysqlDump 命令在 cron 中不起作用

php - 使用PHP邮件功能发送电子邮件,邮件服务器的配置

mysql - 无法弄清楚为什么我的 SQL 查询没有返回结果

java - 列表中的 CSV 或 JSON 文件

java - Jackson JSON 反序列化为 java.util.Date 不起作用

MYSQL - 如何构建此查询?