Jquery ajax发送阿拉伯字符到php和mysql查询之类的

时间:2014-02-11 23:50:52

标签: php jquery mysql ajax utf-8

我已尝试过在网络和StackOverflow上找到的许多解决方案,但在我的情况下,我无法解决问题。

我想澄清所有html / php文件,与数据库的连接和元字符集都是utf-8编码。

我通过jQuery.ajax()发送发布数据,并通过firebug查看帖子消息的来源,阿拉伯字符串仅使用jQuery.serialize()发送如下(或者serializeArray())

  

HP-搜索=%D9%85%D9%84%D8%AD

在php文件中我有一个简单的查询,在将参数传递给db之前我使用的是urldecode($ search_text)(rawurldecode)。

$sql = "SELECT * 
        FROM $db_table
        WHERE $cur_match LIKE '%".urldecode($search_text)."%'";

(我知道此代码中没有安全性,但现在我只需要进行一些测试。)

在phpmyadmin中尝试查询,一切正常,但如果我将 $ sql 字符串连接到ajax响应,我可以看到正确的查询

SELECT * FROM testdb WHERE t_ar LIKE '%ملح%'

我尝试了几种方法但未能达成解决方案。

jquery脚本和php可以正常使用英文字符等。

我需要帮助:(

这是ajax调用代码

........

var serializedDataHP = $("#"+cur_form).serializeArray();

$.mobile.loading("show");

$.ajax({
    cache: false,
    type: "POST",
    //contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
    url: "includes/custom.php?action=search",
    data: serializedDataHP,
    success: function(msg) {
        ........
    },
    error: function() {
        ........
    }
}); ........

谢谢

修改

jQuery使用:jquery-1.7.2.min.js(有没有与此版本相关的错误?)

var serializedDataHP = $("#"+cur_form).serialize();

PHP

urldecode($search_text)

在ajax响应中显示sql代码我可以看到像我上面写的那样正确但是它返回0行,在phpmyadmin中我获得了5个结果。 通过ajax将阿拉伯语和非字符发送到php all utf8的正确方法是什么? TNX

2 个答案:

答案 0 :(得分:0)

你必须在html页面中统一字符编码:

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

也尝试使用json_decode()函数

答案 1 :(得分:0)

我找到了解决方案,问题是主机没有告诉我MySQL服务器升级。 所以基本上我使用这些查询连接到数据库

mysql_query("SET NAMES 'utf8'",$dbhandle);

mysql_query("SET CHARSET 'utf8'",$dbhandle);

然后使用此功能代替之前的

mysql_set_charset("utf8", $dbhandle);

我解决了这个问题。