1

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

$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)。

4

1 回答 1

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) + "&";
});
于 2013-10-17T15:25:21.133 回答