Я использую json_encode
для вставки массива значений (например: <input name="ok[]">...
в базе данных, не знаю, почему он вставил персидские слова как ["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]
он был ранее вставлен как: سید سعید داداشزاده
.
Вывод базы данных ( select * from tabla ...
) по json_encode
равен: [\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]"
В моей таблице (базы данных), сортировка этой строки – utf8_general_ci
?
Что я делаю для print("output of database")
Персидские слова как سید سعید داداشزاده
?
json_encode
кодирует все символы не-ascii с обозначением \uXXXX
. Это не проблема, потому что любой json-декодер и javascript распознают это обозначение:
json_decode('["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]'); // array('سید سعید داداشزاده')
Однако кажется, что строка, которую вы получаете из базы данных, сбрасывается. Либо он был с двойным экранированием перед вставкой в базу данных, либо у вас включен magic_quotes_runtime. Используйте stripslashes
в json-строке, прежде чем использовать json_decode
, чтобы избежать ее:
json_decode(stripslashes('[\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]'));
json_encode экранирует каждый символ. Используйте stripslashes () для строки, чтобы удалить дополнительную косую черту для каждого символа.
вы можете использовать эту суть:
https://gist.github.com/MahdiMajidzadeh/88407f4c33a294cae29ed1493332d7c0
:)))))