PHP-декодирование и кодирование json с символами Unicode

У меня есть json, который мне нужно декодировать, изменить и затем закодировать, не испортив символы.

Если у меня есть символ Юникода в строке json, он не будет декодирован. Я не уверен, почему, поскольку json.org говорит, что строка может содержать: любой-Unicode-character- кроме - "- или - \ - or- control-character . Но это не работает в python либо.

{"Tag":"Odómetro"}

Я могу использовать utf8_encode, который позволит декодировать строку с помощью json_decode, однако символ искажается во что-то еще. Это результат print_r результирующего массива. Два символа.

[Tag] => Odómetro

Когда я кодирую снова массив. Я символ экранировал в ascii, что правильно в соответствии со спецификацией json:

"Tag"=>"Od\u00f3metro"

Есть ли способ отменить это? json_encode не дает такой опции, utf8_encode, похоже, тоже не работает.

Изменить Я вижу, что для json_encode есть параметр unescaped_unicode. Однако он работает не так, как ожидалось. Черт возьми, это только на php 5.4. Мне придется использовать регулярное выражение, так как у меня только 5.3.

$json = json_encode($array, JSON_UNESCAPED_UNICODE);
Warning: json_encode() expects parameter 2 to be long, string ...
36
задан Keyo 11 September 2011 в 23:24
поделиться