... into the database, I don’t kno...">

Json_encode and Persian words?

I use json_encode to insert an array of values ​​(for example: <input name="ok[]">... into the database, I don’t know why it inserted Persian words like ["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"] , it was previously inserted as: سید سعید داداشزاده .

The database output ( select * from tabla ... ) to json_encode is: [\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]"

In my table (database), the sorting of this row is utf8_general_ci ?

What am I doing for print("output of database") Persian words like سید سعید داداشزاده ?

+3
source share
3 answers

json_encode encodes all non-ascii characters with a note \uXXXX . This is not a problem because any json decoder and javascript recognize this notation:

 json_decode('["\u0633\u06cc\u062f \u0633\u0639\u06cc\u062f \u062f\u0627\u062f\u0627\u0634\u0632\u0627\u062f\u0647"]'); // array('سید سعید داداشزاده') 

However, it seems that the row you get from the database is reset. Either it was double-shielded before being inserted into the database, or you have magic_quotes_runtime turned on. Use stripslashes in json string before using json_decode to avoid it:

 json_decode(stripslashes('[\"\\u0633\\u06cc\\u062f \\u0633\\u0639\\u06cc\\u062f \\u062f\\u0627\\u062f\\u0627\\u0634\\u0632\\u0627\\u062f\\u0647\"]')); 
+3
source

json_encode escapes every character. Use stripslashes () for a string to remove the extra slash for each character.

0
source

Source: https://habr.com/ru/post/1383148/


All Articles