दिलचस्प पोस्ट
स्पार्क डेटाफ़्रेम: प्रत्येक कॉलम के अलग-अलग मानों को गिनें एप्लिकेशन मैक ओएस एक्स पर ओरेकल से जावा 6 के बजाय जावा 6 का प्रयोग कर रहा है? मैं दो जावास्क्रिप्ट ऑब्जेक्ट ग्राफ़ के बीच के अंतरों की एक सूची कैसे प्राप्त करूं? इंटरनेट एक्सप्लोरर में addEventListener बाइट स्ट्रीम में पैकेट की पहचान अतिव्यापी अवधि का पता लगाने के लिए एल्गोरिथम कस्टम एडाप्टर और फिल्टर के साथ स्वत: पूर्णतथाचित्र देखें कोर्स को समझना URLConnection से बाइनरी फ़ाइल पढ़ना Log4j लॉगगर प्रोग्रामिंग को कॉन्फ़िगर करना वक्रार (अधिकतम) हर जगह? फ़िशइ विरूपण को प्रोग्रामेटिक रूप से ठीक करना Inno सेटअप में सीरियल नंबर के लिए कस्टमपेज IPhone UITableView स्क्रोलिंग प्रदर्शन में सुधार के लिए ट्रिक्स? सी अभिव्यक्ति में जहां अहस्ताक्षरित int और हस्ताक्षरित इंट मौजूद है, किस प्रकार को किस प्रकार को बढ़ावा दिया जाएगा?

Php json_decode में JSON_ERROR_UTF8 त्रुटि को कैसे हल करें?

मैं यह कोड कोशिश कर रहा हूँ

$json = file_get_contents("http://www.google.com/alerts/preview?q=test&t=7&f=1&l=0&e"); print_r(json_decode(utf8_encode($json), true)); ////////////// // Define the errors. $constants = get_defined_constants(true); $json_errors = array(); foreach ($constants["json"] as $name => $value) { if (!strncmp($name, "JSON_ERROR_", 11)) { $json_errors[$value] = $name; } } // Show the errors for different depths. foreach (range(4, 3, -1) as $depth) { var_dump(json_decode($json, true, $depth)); echo 'Last error: ', $json_errors[json_last_error()], PHP_EOL, PHP_EOL; } 

मैंने बहुत सारे फ़ंक्शन, html_entities_decode, utf8_encode और decode, हेक्स कोड डिकोड करने की कोशिश की है, लेकिन मुझे हमेशा "JSON_ERROR_UTF8" त्रुटि मिलती है

मैं इसे कैसे हल सकता हूं?

वेब के समाधान से एकत्रित समाधान "Php json_decode में JSON_ERROR_UTF8 त्रुटि को कैसे हल करें?"

आपको कोड की सरल पंक्ति चाहिए:

 $input = iconv('UTF-8', 'UTF-8//IGNORE', utf8_encode($input)); $json = json_decode($input); 

श्रेय: सांग ले, मेरी टीम ने मुझे यह कोड दिया। हाँ!

अपने सरणियों को साफ करने के लिए एक अच्छा कार्य है

मेरा सुझाव है कि आप इस तरह एक json_encode wrapper का उपयोग करें:

 function safe_json_encode($value){ if (version_compare(PHP_VERSION, '5.4.0') >= 0) { $encoded = json_encode($value, JSON_PRETTY_PRINT); } else { $encoded = json_encode($value); } switch (json_last_error()) { case JSON_ERROR_NONE: return $encoded; case JSON_ERROR_DEPTH: return 'Maximum stack depth exceeded'; // or trigger_error() or throw new Exception() case JSON_ERROR_STATE_MISMATCH: return 'Underflow or the modes mismatch'; // or trigger_error() or throw new Exception() case JSON_ERROR_CTRL_CHAR: return 'Unexpected control character found'; case JSON_ERROR_SYNTAX: return 'Syntax error, malformed JSON'; // or trigger_error() or throw new Exception() case JSON_ERROR_UTF8: $clean = utf8ize($value); return safe_json_encode($clean); default: return 'Unknown error'; // or trigger_error() or throw new Exception() } } function utf8ize($mixed) { if (is_array($mixed)) { foreach ($mixed as $key => $value) { $mixed[$key] = utf8ize($value); } } else if (is_string ($mixed)) { return utf8_encode($mixed); } return $mixed; } 

मेरे अनुप्रयोग में utf8_encode () iconv () से बेहतर काम करता है

Iconv फ़ंक्शन बहुत बेमानी है जब तक कि आप गारंटी नहीं दे सकते कि इनपुट मान्य है। इसके बजाय mb_convert_encoding का उपयोग करें

 mb_convert_encoding($value, "UTF-8", "auto"); 

आप "ऑटो" से अधिक स्पष्ट प्राप्त कर सकते हैं, और यहां तक ​​कि अनुमानित इनपुट एन्कोडिंग की अल्पविराम से अलग सूची भी निर्दिष्ट कर सकते हैं।

सबसे महत्वपूर्ण बात, अमान्य वर्णों को पूरे स्ट्रिंग को त्यागने के बिना संभाला जाएगा (iconv के विपरीत)।