处理JSON文件中的非UTF-8数据

时间:2019-06-24 18:58:41

标签: php json utf-8

我正在从某个位置获取一个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文件中奇怪字符的最佳方法吗?

谢谢

1 个答案:

答案 0 :(得分:1)

JSON的定义是UTF-8-因此,您应该使用UTF-8:您的所有PHP脚本都应位于UTF-8中,应包含任何数据库表,当然还应位于脚本与数据库之间的通信通道中,最后是输出。

如果您做到了这一点,您的问题将自动消失……无需进行任何转换。