我需要Content-Type: application/json; charset=UTF-8
在 CakePHP 的数据视图中进行设置。我已经尝试设置$this->response->header('Content-Type', 'application/json; charset=UTF-8');
,但这并没有改变任何东西。它仍然只是输出Content-Type: application/json
。
问问题
7268 次
6 回答
1
它在代码中(CakeResponse,第 447 行):
if (strpos($this->_contentType, 'text/') === 0) {
$this->header('Content-Type', "{$this->_contentType}; charset={$this->_charset}");
} else {
$this->header('Content-Type', "{$this->_contentType}");
}
所以只有“text/...”才会附加字符集。我不知道为什么,虽然...
于 2012-11-16T22:36:44.487 回答
0
有趣的是,我昨晚也遇到了同样的问题。似乎 UTF-8 是默认的 JSON 编码,这可能是 Cake 不发送标头的原因(但我无法找到对这个决定的引用)。
我的解决方案是使用 php——json_decode()
它应该正确解码字符串。我有很多法语口音显示为 java/C unicode,例如\u00E9
,我认为这是一个标题问题。但是在通过json_decode()
重音字符运行字符串后,所有显示都正确。
Marks 的评论链接也有很好的信息。
于 2012-11-17T04:37:38.537 回答
0
为此,您可以将其放在控制器/功能中:
json_encode($updown_rs);
并在视图文件(views/check_json)中:
var json_object = $.parseJSON(response);
于 2012-11-21T12:57:59.370 回答
0
application/json 没有字符集参数。试图设置一个是没有意义的。请参阅http://rfc7159.net/rfc7159#ianacons。
于 2014-03-21T13:33:22.177 回答
0
我正在使用 cake 2.10.11 并且只是在 json 布局中使用了这段代码:
$this->response->charset('utf-8');
于 2018-10-15T15:35:38.803 回答
0
您可以$this->RequestHandler->ext = 'json';
在 beforefilter 方法中使用
查看以下示例
public function beforeFilter(){
parent::beforeFilter();
$this->RequestHandler->ext = 'json';
}
public function index()
{
$this->autoRender = false;
$output = array(
array('value' =>'first value'),
array('value' =>'second value'),
);
$json = json_encode($output);
$this->response->body($json);
}
于 2020-07-08T16:06:22.557 回答