簡體   English   中英

如何在沒有UTF8的情況下使用PHP json_encode?

[英]How to use PHP json_encode without UTF8?

我正在一個舊的現有網站上工作。 所有頁面均以ISO-European(包括MySQL數據庫)進行編碼。

我想使用PHP的json_encode添加一些AJAX,它僅支持UTF8。

有沒有在不使用UTF8的情況下使用json_encode的解決方案?

您可以使用var_exportutf8_encodeeval將數組遞歸轉換為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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM