Я пытаюсь отправить строку Персидский в базу данных mysql; но он сохраняет данные как что-то вроде этого "%D8%AC%D8%AF%DB%8C%D8%AF".
У английских струн нет проблем.
var new = $(this).val();
$.ajax({
url: '/url/' + new,
type: 'GET',
success: function () {
window.location.href = window.location.href;
}
});
А вот мой код php.
public function url($new){
$db = Db::getInstance();
$db->insert("INSERT INTO table (column) VALUES ('$new')");}
Как я могу решить эту проблему?
Что-то не так с моими символами URL. Я обнаружил, что если я воспользуюсь почтовым методом, проблема разрешится. Я использую структуру MVC и хочу, чтобы в моем URL-адресе были персидские строки. так как я могу решить эту новую проблему ??? ...
@MadhurBhaiya его "utf8_general_ci" для таблицы, а этот столбец - "VARCHAR"



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Измените свою таблицу
ALTER TABLE 'your table name' MODIFY 'column name' VARCHAR(20) CHARACTER SET UTF8;
Для отображения персидского языка на ваших веб-страницах вам необходимо использовать код
<meta charset = "UTF-8">
Для URL:
$ строка = '% E0% A4% 89-% E0% A4% 85% E0% A4% B9% E0% A4% BF% E0% A4% B2% E0% A5% 87-% E0% A4% 95% E0 % A4% B9% E0% A4% BE% E0% A4% 81-% E0% A4% 9B-% E0% A4% A4 ';
echo rawurldecode ($ строка);
Вы можете использовать rawurldecode(string) для декодирования строки
Перед вставкой символа Unicode, такого как персидский или арабский, в базу данных, вам необходимо установить набор символов Utf-8 при подключении к базе данных.
public function url($new){
$db = Db::getInstance();
$db->exec('SET NAMES utf8');
$db->insert("INSERT INTO table (column) VALUES ('$new')");}
также для предотвращения каких-либо проблем вы должны установить для сортировки базы данных значение utf8 general ci при создании баз данных, в которых хранятся персидские символы или другие символы Unicode.
Проблема может быть вызвана тремя слоями. Во-первых, ваша база данных будет иметь кодировку символов по умолчанию. Во-вторых, ваша таблица может иметь явную кодировку символов, которая имеет приоритет. Поэтому вам нужно убедиться, что для вашей таблицы установлена кодировка Unicode с помощью одного из этих методов. Вы говорите, что ваша таблица настроена на utf8_general_ci, поэтому с этой частью все должно быть в порядке. В-третьих, само соединение имеет определенную кодировку. Это можно настроить в клиентских настройках MySQL по умолчанию с помощью следующих параметров: [mysqld] init_connect = 'УСТАНОВИТЬ ИМЕНА utf8'
Вы также можете установить это в коде. Например, для PHP вы можете сделать следующее: mysql_set_charset ("UTF8", $ conn); или $ db-> exec ('УСТАНОВИТЬ НАБОР СИМВОЛОВ UTF8')
Вы ничего не сказали о том, что такое $ db, поэтому не можете быть уверены. Но как-то так.
Наконец, убедитесь, что он на самом деле не работает, но вы просто этого не знаете. Ваша веб-страница должна быть настроена на utf8. Проверьте, что вы на самом деле получаете с веб-страницы, а не просто предполагайте, что он отправляет Unicode.
Запустите этот запрос, чтобы изменить набор символов и сопоставить таблицу для поддержки символов Юникода.
ALTER TABLE <TABLE_NAME> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
Какой набор символов определен для вашей базы данных?