JSON 中的奇怪字符 (�) 由 PHP 写入文件

Weird characters (�) in JSON written by PHP to file

我有一个 PHP 代码,它在调用时写入 JSON 文件。该文件包含一些来自西班牙语和葡萄牙语的拉丁字符。直接浏览到 URL 时,它在浏览器上显示正确,但在应用程序和开发人员控制台中的响应预览选项卡下,这些字符被替换为字符 �.

图片可以更好地说明情况: (点击图片打开全尺寸)

文件在PHP中写入,代码如下:

file_put_contents('../data/cameras.json', $json, LOCK_EX);

我尝试了很多方法来修复此编码但没有成功(其中一些甚至删除了字符,但这不是一个可接受的解决方案)。

有什么解决这个问题的建议吗?

最常见的问题是您的 .json 文件未保存为 UTF-8。用记事本打开文件,并将其另存为UTF-8。还要确保您的 PHP 文件是 UTF-8。

我已经下载了 json 文件,在 notepad++ 中以 ANSI 模式查看时,它看起来不错。所以我猜文件是 WINDOWS-1252 编码。
我猜您想在用 PHP 编写的文件中使用 UTF8

尝试在写入文件之前转换字符串的编码:

$json = mb_convert_encoding($json, "UTF-8", "WINDOWS-1252");

file_put_contents('../data/cameras.json', $json, LOCK_EX);