我已尝试过在网络和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
答案 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);
我解决了这个问题。