как закодировать строку в javascript или jquery и декодировать ее с помощью php

Мне нужно обновить поле в базе данных, используя Ajax и PHP.

Он отлично работает, но когда есть специальные символы, такие как следующие

اللهم اني اشكو اليك ضعف قوتي وقلة حيلتي وهواني علي الناس

Скрипт вставляет ненужные данные в базу данных.

Я попытался использовать escape() javascript для кодирования URL-адресов, он кодирует данные, но когда я декодирую их с помощью PHP, он снова показывает ненужные значения.


person dirtycode    schedule 18.11.2010    source источник
comment
Не должно быть необходимости что-либо кодировать, пока вы обрабатываете это как данные UTF-8 от начала до конца. Какова ваша база данных/соединение с базой данных/кодировка приложения/веб-сайта?   -  person deceze♦    schedule 18.11.2010
comment
моя база данных - mysql, php находится в charset = utf-8, так как я использую ajax, параметры, которые я передаю, должны поддерживаться URL-адресом, если я не кодирую строку, она просто игнорирует вызов. И когда я кодирую строку с помощью javascript, данные отправляются через AJAX на страницу обработки PHP. но когда я пытаюсь декодировать его в исходную строку, он не декодируется должным образом.   -  person dirtycode    schedule 18.11.2010
comment
некоторый пример для проверки - stackoverflow.com/questions/4143853/   -  person ajreal    schedule 18.11.2010
comment
моя база данных только в UTF-8. Я могу обновить одно и то же поле, обычно отправляя данные из формы. Но мне нужно сделать это в Ajax, и когда я звоню с помощью Ajax, он просто отправляет ненужные данные.   -  person dirtycode    schedule 18.11.2010
comment
Оригинальная строка: اللهم اني اشكو اليك ضعف قوتي وقلة حيلتي وهواني علي الناس Кодированный с использованием javaScript Escape () D9%20%20%D9%D9%D9%87%D9%8%20%D9%D9%D9%87%D9%8%20%A7%D9%D9%D9%. 86%D9%8A%20%D8%A7%D8%B4%D 9%83%D9%88%20%D8%A7%D9%84%D9%8A%D9%83%20%D8%B6%D8 %B9%D9%81%20%D9%82% D9%88%D8%AA%D9%8A%20%D9%88%D9%82%D9%84%D8%A9%20%D8%AD%D9 %8A%D9%84%D8 %AA%D9%8A%20%D9%88%D9%87%D9%88%D8%A7%D9%86%D9%8A%20%D8%B9%D9%84 %D9%8 A%20%D8%A7%D9%84%D9%86%D8%A7%D8%B3 получено в файле PHP / декодировано с использованием php urldecode اللهم ان ÙŠ اشكو اليك ضع٠قوتي وقلة ØÙŠÙ „تي وهواني علي §¹Ù„ÙŠ §¹Ù„ÙŠ §   -  person dirtycode    schedule 18.11.2010


Ответы (1)


Вы можете попробовать использовать encodeURIComponent вместо escape, это даст вам что-то вроде этого:

%D8%A7%D9%84%D9%84...

тогда как escape даст:

%u0627%u0644%u0644%u0647...

и экранирование юникода может кого-то сбить с толку.

person mu is too short    schedule 18.11.2010
comment
спасибо, encodeURIComponent дает мне что-то вроде этого %D8%A7%D9%84%D9%84%D9%87%D9%85%20%D8%A7%D9%86%D9%8A.... но как декодировать это в PHP - person dirtycode; 18.11.2010
comment
Код URL-адреса AFAIK (php.net/manual/en/function.urldecode.php ), затем посмотрите, является ли то, что вы получаете, арабским, затем попробуйте добавить арабский язык в базу данных и посмотрите, что получится. По крайней мере, тогда вы будете знать, кто коверкает юникод. - person mu is too short; 18.11.2010