是的,我知道我应该使用UTF-8,但我需要使用windows-1252字符集编码。
我知道我可以通过对基本的Synfony响应类进行硬编码来实现 Response.php,
$charset = $this->charset ?: 'windows-1252';
但这很难看。
我无法从配置文件中找到设置位置。有什么帮助吗?
答案 0 :(得分:3)
您可以在中间件中更改字符集:
<?php namespace App\Http\Middleware;
use Closure;
class SetCharset
{
public function handle($request, Closure $next)
{
$response = $next($request);
$response->header('Content-Type', 'text/html; charset=windows-1252');
return $response;
}
}
请确保您返回的所有内容都采用正确的编码方式。
答案 1 :(得分:0)
仅当内容类型为text/html
时,改进answer by @jedrzej.kurylo才能更改字符集。
<?php
namespace App\Http\Middleware;
use Closure;
class SetCharset
{
public function handle($request, Closure $next)
{
$response = $next($request);
$contentType = $response->headers->get('Content-Type');
if (strpos($contentType, 'text/html') !== false) {
$response->header('Content-Type', 'text/html; charset=windows-1252');
}
return $response;
}
}
放入SetCharset.php app/Http/Middleware
文件夹,然后修改app/Http/Kernel.php
并将类引用添加到$middleware
数组属性的末尾:
protected $middleware = [
// ... Other middleware references
\App\Http\Middleware\SetMiddleware::class,
];