发送波斯语字符串到mysql

时间:2018-09-15 10:59:17

标签: javascript php jquery mysql database

我正在尝试将波斯语字符串发送到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')");}

如何解决此问题?

我的网址字符有问题。 我发现如果使用post方法,它将得到解决。 我正在使用MVC结构,我想在URL中添加一些波斯字符串。 那么我该如何解决这个新问题呢??

4 个答案:

答案 0 :(得分:2)

在数据库中插入波斯语或阿拉伯语等Unicode字符之前,需要在数据库连接上设置Utf-8字符集。

public function url($new){
$db = Db::getInstance();
$db->exec('SET NAMES utf8');
  $db->insert("INSERT INTO table (column) VALUES ('$new')");}

为了防止出现任何问题,在创建存储波斯字符或其他unicode字符的数据库时,必须将数据库排序规则设置为utf8 general ci。

答案 1 :(得分:0)

修改表格

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

要在您的网页上显示波斯语,您需要使用代码

<meta charset="UTF-8">

对于网址:

$ 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);

答案 2 :(得分:0)

可能会导致问题的三层。 首先,您的数据库将具有默认的字符编码。 其次,您的表可以具有优先的显式字符编码。因此,您需要确保通过以下方法之一为表设置了Unicode编码。您说您的表设置为utf8_general_ci,所以这部分应该没问题。 第三,连接本身具有特定的编码。可以使用以下默认设置在MySQL客户端配置中设置:     [mysqld]     init_connect ='设置名称utf8'

您也可以在代码中进行设置。例如,对于PHP,您可以执行以下操作:     mysql_set_charset(“ UTF8”,$ conn); 要么     $ db-> exec('SET CHARACTER SET UTF8')

关于$ db是什么,您还没有说什么,所以不能确定。但是类似的东西。

最后,确保它实际上不起作用,但您只是不知道。您的网页应设置为utf8。检查您从网页实际收到的内容,而不仅仅是假设它正在发送Unicode。

答案 3 :(得分:0)

运行此查询以更改字符集并整理表以支持Unicode字符。

ALTER TABLE <TABLE_NAME> CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;