tôi đang cố gắng mã nàyCách giải quyết lỗi JSON_ERROR_UTF8 trong php json_decode?
$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;
}
Tôi đã thử rất nhiều chức năng, html_entities_decode, utf8_encode và giải mã, giải mã các mã hex, nhưng tôi luôn luôn nhận được lỗi "JSON_ERROR_UTF8".
Tôi làm cách nào để giải quyết vấn đề này?
Tôi không chắc chắn lý do tại sao các lỗi được sắp ra như một lỗi UTF8 . JSON được trả lại bởi URL đó không hợp lệ vì nó sử dụng dấu nháy đơn, nơi nó nên sử dụng gấp đôi. Nó không vượt qua JSON LINT (http://jsonlint.com/). Điều đó nói rằng, tôi giả sử '$ x' trên dòng 2 của mã của bạn nên là' $ json'? – JAAulde
Có, tôi đã làm sạch mã và quên thay đổi $ x, bạn đã thử làm cho nó hợp lệ và sau đó cố gắng giải mã nó? Tôi sẽ không biết cách làm cho nó hợp lệ. –
Tôi đã thử thay thế tất cả các dấu nháy đơn bằng cách tăng gấp đôi, nhưng sau đó chạy vào các vấn đề xác nhận khác. Vẫn đang xem. – JAAulde