将波斯语字符串发送到mysql

46qrfjad  于 2021-06-21  发布在  Mysql
关注(0)|答案(4)|浏览(383)

我正试着把波斯语的细绳送到 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中有一些波斯语字符串。那么我该如何解决这个新问题呢???。。。

i5desfxk

i5desfxk1#

修改您的表 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);

ddhy6vgd

ddhy6vgd2#

在数据库中插入波斯语或阿拉伯语等unicode字符之前,需要在db连接上设置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。

vshtjzan

vshtjzan3#

运行此查询可更改表的字符集和排序,以支持unicode字符。

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

kb5ga3dv4#

有三个层次可能会导致你的问题。首先,您的数据库将有一个默认的字符编码。其次,表可以有一个优先的显式字符编码。因此,您需要确保通过以下方法之一为表设置unicode编码集。你说你的table被设置为utf8\u general\u ci,所以这部分应该没问题。第三,连接本身有一个特定的编码。这可以在mysql客户端配置默认值中设置为:[mysqld]init\u connect='set names utf8'
也可以在代码中设置。例如,对于php,可以执行以下操作:mysql\u set\u charset(“utf8”,$conn);或$db->exec('set character set utf8')
你还没说$db是什么,所以不能确定。但是像这样的。
最后,确保它没有真正工作,但你只是不知道它。您的网页应该设置为utf8。检查您从网页上实际收到的信息,不要仅仅假设它发送的是unicode。

相关问题