在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文件中奇怪字符的最佳方法吗?

谢谢

JSON是UTF-8,根据定义 - 您应该使用UTF-8:因此,所有PHP脚本都应在UTF-8中,任何数据库表,当然也应在您的通信频道之间脚本和数据库,最后是输出。

如果您实现了这一目标,那么您的问题将自动消失...无需再转换。

最新更新