我正在尝试将波斯语字符串发送到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中添加一些波斯字符串。 那么我该如何解决这个新问题呢??
答案 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;