Отправить персидскую строку в MySQL - PullRequest
0 голосов
/ 15 сентября 2018

Я пытаюсь отправить персидскую строку в базу данных 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. Я узнал, что если я использую метод post, он будет решен. Я использую структуру MVC и хочу, чтобы в моем URL были некоторые персидские строки. так как я могу решить эту новую проблему ??? ...

Ответы [ 3 ]

0 голосов
/ 15 сентября 2018

Перед вставкой символа 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 при созданиибазы данных, в которых хранятся персидские символы или другие символы Юникода.

0 голосов
/ 15 сентября 2018

Есть три слоя, которые могут быть причиной вашей проблемы. Во-первых, ваша база данных будет иметь кодировку символов по умолчанию. Во-вторых, ваша таблица может иметь явную кодировку символов, которая имеет приоритет. Таким образом, вы должны убедиться, что у вас есть набор кодировки Unicode для вашей таблицы с помощью одного из этих методов. Вы говорите, что ваша таблица установлена ​​в utf8_general_ci, поэтому эта часть должна быть в порядке. В-третьих, есть само соединение, которое имеет определенную кодировку. Это может быть установлено в настройках клиента MySQL по умолчанию со следующим: [ТуздЫ] init_connect = 'SET NAMES utf8'

Вы также можете установить его в коде. Например, для PHP вы можете сделать следующее: mysql_set_charset ("UTF8", $ conn); или же $ db-> exec ('SET CHARACTER SET UTF8')

Вы ничего не сказали о том, что такое $ db, поэтому не можете быть уверены. Но что-то в этом роде.

Наконец, убедитесь, что он на самом деле не работает, но вы просто этого не знаете. Ваша веб-страница должна быть настроена на utf8. Проверьте, что вы на самом деле получаете с веб-страницы, и не просто предполагайте, что она отправляет Unicode.

0 голосов
/ 15 сентября 2018

Изменить вашу таблицу

ALTER TABLE 'your table name' MODIFY 'column name' VARCHAR(20) CHARACTER SET UTF8;

Для отображения персидского на ваших веб-страницах вам нужно использовать код

<meta charset="UTF-8">

Для URL:

$ string = '% 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 ($ string);

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...