Единственное, что вам нужно сделать, это преобразовать данные в UTF-8 перед передачей до json_encode
. Эта функция требует UTF-8 данные, и если вы не хотите переопределять 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));
Это не обязательно полное решение охватывает все возможные варианта использования, но она должна иллюстрируют эту идею.
http://stackoverflow.com/questions/6606713/json-encode-non-utf-8-strings, помогает ли это? – codisfy
просто для очистки точки: JSON требует/указывается только для стандарта Unicode (где utf-8 - это конкретная кодировка, которая подходит). Поэтому утверждение 'use json_encode без UTF8' не имеет никакого смысла. – birdspider