我正在从某个位置获取一个JSON文件,并将其内容传递给我的前端。为此,我需要执行以下操作
return response()->json(json_decode(file_get_contents('some/path', true)));
但是,有时,我注意到由于utf-8字符格式错误,此操作失败。我查看了JSON文件,发现有时£符号之类的东西有时被表示为一个奇怪的符号,例如。
{
"ID": "123",
"Date": "08/06/2012",
"Amount": "�120.59"
}
处理这种情况的最佳方法是什么?目前,我正在尝试以下操作
$data = file_get_contents('some/path', true);
$encoding = mb_detect_encoding($data, mb_detect_order(), true);
if($encoding !== "UTF-8") {
return response()->json(json_decode(utf8_decode($data)));
}
return response()->json(json_decode($data));
这似乎可行,但不确定是否是最佳方法?我检查它是否为UTF-8的原因是,如果我尝试在已经为UTF-8的内容上使用utf8_decode
,则会失败。
这是处理JSON文件中奇怪字符的最佳方法吗?
谢谢
答案 0 :(得分:1)
JSON的定义是UTF-8-因此,您应该使用UTF-8:您的所有PHP脚本都应位于UTF-8中,应包含任何数据库表,当然还应位于脚本与数据库之间的通信通道中,最后是输出。
如果您做到了这一点,您的问题将自动消失……无需进行任何转换。