代码之家  ›  专栏  ›  技术社区  ›  catbelly

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

  •  5
  • catbelly  · 技术社区  · 15 年前

    $sql = "update tbl_test set category = N'resumé';
    
    echo $sql;
    
    $rs=odbc_exec($conn,$sql);
    

    其中$conn是到MSSQL服务器的DSN ODBC连接。问题似乎是PHP和MySQL(可能是ODBC?)之间的unicode字符被转换成垃圾字符。如果我将echo所说的内容直接复制粘贴到Enterprise Manager中,它将插入MS SQL fine。但是,如果我运行代码,它总是作为resum进入MSSQL。你知道我错过了什么吗?

    3 回复  |  直到 15 年前
        1
  •  4
  •   catbelly    15 年前

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

        2
  •  1
  •   Wez Furlong    15 年前

        3
  •  0
  •   TheJacobTaylor    15 年前

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