Я не знаю, что происходит, но у меня есть строка внутри массива. Он должен быть строкой, поскольку я сначала использовал ее:
$array[0] = (string)$array[0];
Если я вывешу $ array [0] в браузер в виде простого текста, это будет выглядеть так:
hellothere
Но если я JSON кодирую $ array, я получаю следующее:
hello\u0000there
Кроме того, мне нужно отделить часть «there» (бит после \ u0000), но это не работает:
explode('\u0000', $array[0]);
Я даже не знаю, что такое или как управлять им в PHP.
Я видел эту ссылку: пытаюсь найти и избавиться от этого \ u0000 от моего json …, который предлагает str_replacing генерируемый JSON. Я не могу этого сделать (и нужно сначала отделить его, как упоминалось выше), чтобы затем проверить Google на «проверку php на обратную косую черту \ 0 байт», но я все еще не могу понять, что делать.
\uXXXX
– это обозначение escape- \uXXXX
Unicode JSON ( X
является шестнадцатеричным).
В этом случае это означает, что символ ASCII 0
, так называемый NUL-байт, может разделить его:
explode('\u0000', json_encode($array[0]));
Или еще лучше:
explode("\0", $array[0]); // PHP doesn't use the same notation as JSON
У вас есть строка "hello\0world"
или "hello\x00world"
что вы предпочитаете. Если вы его echo
, нулевой символ \0
не будет отображаться, поэтому вместо него вы видите helloworld
, но json_encode
обнаружит его и helloworld
от него, как и к любому другому специальному символу, поэтому его заменяет видимая строка \u0000
,
В моем способе видеть это, json кодирует строку отлично, \u0000
должен выполнить свою работу по воспроизведению введенной строки в кодировке json. Вам не нужно касаться его выхода. Если вы этого не хотите, вы должны исправить его вход .
вы можете просто сделать trim($str)
не давая ему charlist
\uXXXX
является символом unicode с кодом XXXX
(шестнадцатеричный). Например: http://msdn.microsoft.com/en-us/library/aa664669(v=vs.71).aspx
Если вы действительно получаете 0000
– тогда это всего лишь символ с кодом 0
Сегодня я столкнулся с этой проблемой, и я разобрал ее, заменив \ u0000 в моем массиве на «" перед отправкой обратно клиенту.
echo str_replace('\\u0000', "", json_encode($send));
Попробуйте explode("\u0000", $array[0]);
, убедившись, что вы используете двойные кавычки. С одинарными кавычками он будет разбирать буквенное значение символа 6.
Как \u0000
другие, \u0000
является \u0000
Unicode.