如何让Symfony在所有响应中指定我的字符集?

Hub*_*bro 7 php symfony

我的Symfony 2应用程序的所有响应都有这个标题行:

Content-Type: text/html
Run Code Online (Sandbox Code Playgroud)

所以我的浏览器假设输出字符集是ISO-8859-1.我想标题说:

Content-Type: text/html; charset=utf8
Run Code Online (Sandbox Code Playgroud)

代替.我知道我可以为每个响应手动执行此操作:

$response->setCharset('UTF-8');
Run Code Online (Sandbox Code Playgroud)

但这将是非常多余的,因为我的应用程序有很多控件,只能输出UTF-8.我徒劳地搜索了一个控制默认字符集的Symfony配置设置.我发现framework.charset但这似乎是无关的,无论如何默认是UTF-8.

如何让Symfony在所有响应中指定我的字符集?


我的想法

我知道这不是一个问题(大多数时候),因为我可以在HTML和XML中明确指定charset.问题是我服务纯文本或JSON,或者我正在使用转储变量var_dump.在这两种情况下,所有非ASCII符号都被扰乱,因为我的浏览器冒错了猜测.

我的备份解决方案是将响应类子类化并放入$this->setCharset('UTF-8')构造函数中.

fko*_*ler -1

我认为你可以告诉框架在 config.yml 中使用哪个字符集:

framework:
  charset:         UTF-8
Run Code Online (Sandbox Code Playgroud)

请参阅: http: //symfony.com/doc/current/reference/configuration/framework.html

  • `RuntimeException:字符集设置已弃用。只需将其从配置文件中删除即可。 (2认同)
  • 字符集设置已被弃用。https://github.com/symfony/symfony/pull/4716 使用 AppKernel::getCharset http://symfony.com/doc/current/reference/configuration/kernel.html#charset (2认同)