如何用法国口音json_encode阵列?

2022-08-30 14:06:31

我有一个带有法国口音的数组项([WIPDescription] => Recette Soupe à lOignon Sans Boeuf US)。数据正在从数据库 (mysql) 中正确提取。

但是,当我尝试使用内置的php将其编码为json时json_encode它会生成一个空json值(OS X服务器:php 5.3.4,json 1.2.1启用)。

在 Linux 服务器中,描述在第一个重音字符之后被截断。

我尝试了所有json_encode选项,但没有成功。有什么建议吗?

谢谢。


答案 1

我发现这是处理它的最简单方法

echo json_encode($array, JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES);

JSON_PRETTY_PRINT - 使JSON_UNESCAPED_UNICODE可读
- 正确
编码字符JSON_UNESCAPED_SLASHES - 摆脱转义斜杠'\'
还请注意,这些选项由管道“|”分隔


答案 2

json_encode只想要.根据您的字符集,您可以在调用变量之前使用或utf8_encode。可能与 .utf-8iconvjson_encodearray_walk_recursive

根据要求,一种未完成的方法来改变数组,假设(1)它不包含对象,并且(2)数组键处于ascii /下限,因此可以保持原样:

$current_charset = 'ISO-8859-15';//or what it is now
array_walk_recursive($array,function(&$value) use ($current_charset){
     $value = iconv('UTF-8//TRANSLIT',$current_charset,$value);

});

推荐