使用PHP插入Unicode字符 - > ODBC - > MS SQL?

时间:2009-08-05 03:01:53

标签: php unicode odbc

我有以下代码:

$sql = "update tbl_test set category = N'resumé';

echo $sql;

$rs=odbc_exec($conn,$sql);

其中$ conn是与MSSQL Server的DSN ODBC连接。问题似乎是在PHP和MySQL(可能是ODBC?)之间的某个地方将unicode字符转换为垃圾。如果我将回显的内容直接复制粘贴到企业管理器中,它会很好地插入到MS SQL中。但是,如果我运行代码,它总是作为resumé进入MSSSQL。知道我在这里缺少什么吗?

3 个答案:

答案 0 :(得分:4)

问题不是ODBC,而是PHP ...解决方案是对从数据库返回的字符串使用utf8_decode()。

答案 1 :(得分:1)

如果你在Windows上运行PHP 5.3,使用PDO_ODBC和SQL Native Client,输入文本是UTF-8,那么这应该是自动运行的。

答案 2 :(得分:0)

我会在这里小心翼翼。过去,在处理SQL Server和PHP集成时,我遇到过SQL Server使用的存储空间是Unicode字符实际需要的3到5倍的情况。具体取决于您连接数据库的方式以及数据的编码方式。我的理解是,MSFT正在研究一种新的驱动程序(或者可能已经有一段时间了),它解决了这个问题,并且通常会改进PHP集成。对于一些较旧的堆栈,您可能会遇到麻烦。我建议查看数据库中的数据大小,以验证连接是否填充了数据。

雅各