Php fopen 或 fwrite 使用 unicode 创建文本
Php fopen or fwrite creates text with unicode
我正在尝试使用 fopen 和 fwrite 写入文件。我有一个数组,打印时显示良好。
例如,我可以看到 "Délai de livraison"
被打印出来。
创建文件后显示为:"D\u00e9lai de livraison"
。
如果我理解正确的话,“\u00e9”是 unicode。
我试过添加一个"BOM"并写入到文件的开头,但是没有任何变化。
//Write $newarray to a file
$filename = 'translations_fr.json';
//create json file
$file = base_path('/imports/') . $filename;
$fp = fopen($file, 'w');
//BOM
fwrite($fp, "\xEF\xBB\xBF");
fwrite($fp, json_encode($newarray));
fclose($fp);
我的 IDE 是 Netbeans,它默认配置为 UTF-8。
我尝试了 utf8_encode(),但没有成功。
我能做什么?
这不是 BOM 或 fwrite()
问题。 json_encode()
默认情况下会将所有多字节字符转换为 unicode 格式。
但您可以使用 JSON_UNESCAPED_UNICODE
选项:
echo json_encode(['test'=>'délai']);
echo json_encode(['test'=>'délai'], JSON_UNESCAPED_UNICODE);
输出:
{"test":"d\u00e9lai"}
{"test":"délai"}
Encode multibyte Unicode characters literally (default is to escape as \uXXXX). Available since PHP 5.4.0.
我正在尝试使用 fopen 和 fwrite 写入文件。我有一个数组,打印时显示良好。
例如,我可以看到 "Délai de livraison"
被打印出来。
创建文件后显示为:"D\u00e9lai de livraison"
。
如果我理解正确的话,“\u00e9”是 unicode。
我试过添加一个"BOM"并写入到文件的开头,但是没有任何变化。
//Write $newarray to a file
$filename = 'translations_fr.json';
//create json file
$file = base_path('/imports/') . $filename;
$fp = fopen($file, 'w');
//BOM
fwrite($fp, "\xEF\xBB\xBF");
fwrite($fp, json_encode($newarray));
fclose($fp);
我的 IDE 是 Netbeans,它默认配置为 UTF-8。 我尝试了 utf8_encode(),但没有成功。 我能做什么?
这不是 BOM 或 fwrite()
问题。 json_encode()
默认情况下会将所有多字节字符转换为 unicode 格式。
但您可以使用 JSON_UNESCAPED_UNICODE
选项:
echo json_encode(['test'=>'délai']);
echo json_encode(['test'=>'délai'], JSON_UNESCAPED_UNICODE);
输出:
{"test":"d\u00e9lai"}
{"test":"délai"}
Encode multibyte Unicode characters literally (default is to escape as \uXXXX). Available since PHP 5.4.0.