使用MSSQL进行PDO查询编码

时间:2013-03-28 13:05:18

标签: php sql-server encoding pdo

我有一个可怕的问题让我生病:)这是我的问题的简单例子:

$driver="SQL Server; TDS_Version=7.2; Port=1433";
$dbh = new PDO("odbc:Driver=$driver;Server=$server;Database=$database;charset=utf-8;Uid=$username;Pwd=$password;");
$query="select * from table where f_name like '%aleš%'";
$sth = $dbh->prepare($query);
$sth->execute();
$result = $sth->fetchAll();

我对捷克名称(aleš)的编码有问题。但是,此查询应返回一些结果,但不会。当我用名称做同样的查询时,巫婆不包含任何特定于捷克语的字母(petr),它的效果非常好。

我在MS网站上发现了一些评论,即mssql服务器只接受ucs-2编码的vartext查询。我也以某种方式尝试过,但没有运气。有任何想法吗?非常感谢你! (抱歉 - 这是我第一次使用mssql)。

1 个答案:

答案 0 :(得分:0)

我有与您(SQL Server,PDO)大致相同的设置,并且遇到了同样的问题。 现在我通过jQuery AJAX调用将表单数据发送到PHP,当我构造GET字符串时,我执行'encodeURIComponent'并正确编码特殊字符(ščžýáí)。

var formdata = $('#test_form').serializeArray();
req = '';
$.each(formdata, function(i,element){
    req += element.name + "=" + encodeURIComponent(element.value) + "&";
});