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

问题描述:

我有以下代码:用PHP插入Unicode字符 - > ODBC - > MS SQL?

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

echo $sql; 

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

其中$ conn是一个DSN ODBC连接到MSSQL Server中。问题似乎是PHP和MySQL之间(也许ODBC?)unicode字符被转换为垃圾。如果我将粘贴直接复制到企业管理器中,它会将其插入到MS SQL中。但是,如果我运行代码,它通常会以摘要的形式进入MSSSQL。任何想法我在这里失踪?

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

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

雅各

如果您使用的是Windows,并使用与PDO_ODBC SQL Native Client的运行PHP 5.3,和您输入的文本是UTF-8,这应该只是自动工作。