[英]How to use PHP json_encode without UTF8?
我正在一个旧的现有网站上工作。 所有页面均以ISO-European(包括MySQL数据库)进行编码。
我想使用PHP的json_encode添加一些AJAX,它仅支持UTF8。
有没有在不使用UTF8的情况下使用json_encode的解决方案?
您可以使用var_export
, utf8_encode
和eval
将数组递归转换为UTF-8。 这有点骇人听闻,但类似以下内容的作品:
$obj = array("key" => "\xC4rger"); // "Ärger" in Latin1
eval('$utf8_obj = ' . utf8_encode(var_export($obj, TRUE)) . ';');
print json_encode($utf8_obj);
这将打印
{"key":"\u00c4rger"}
您唯一需要做的就是在将数据传递给json_encode
之前将其转换为UTF-8。 该函数需要UTF-8数据,除非您想自己重新实现json_encode
,否则要满足它的要求要容易json_encode
:
function recursivelyConvertToUTF8($data, $from = 'ISO-8859-1') {
if (!is_array($data)) {
return iconv($from, 'UTF-8', $data);
}
return array_map(function ($value) use ($from) {
return recursivelyConvertToUTF8($value, $from);
}, $data);
}
echo json_encode(recursivelyConvertToUTF8($myData));
这不一定是涵盖所有可能用例的完整解决方案,但应可以说明这一想法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.