У меня есть 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 ...