我目前在我们的项目中遇到了一个问题,即我从数据库中读取文本,对其进行一些修改,然后再次保存。数据保存在ntext字段中(实际上是XML文档)。我收到的错误是:
Zend_Db_Statement_Exception:SQLSTATE [HY000]:常规错误:2402[FreeTDS] [SQL Server]将字符转换为服务器的错误字符集。某些字符无法转换(SQLExecute [2402]位于/build/php5-F6w79J/php5-5.5.9+dfsg/ext/pdo_odbc/odbc_stmt.c:254)
我们正在与:
我怀疑错误与数据编码有关。它在大多数数据库条目中都可以正常工作,但在某些情况下会引发上述错误。从数据库到php再返回时,似乎有些字符的编码混杂在一起。如果将有问题的XML保存到文件中并打开,则会出现一条错误消息,提示XML格式不正确(尽管如果我将xml直接从数据库直接复制到xml验证程序中,则一切正常)。我们已经尝试过滤掉可能有问题的所有控制字符,并且还查找了此错误-但到目前为止,没有任何答案对我真正有用。有谁知道这个错误可能起源的地方?如果我可以确定是哪些字符导致了此问题,也可能会有所帮助,也许我可以在将数据写回到数据库之前将其过滤掉。
如果需要任何其他信息,我们将很乐意为您提供帮助。
问候,
Sajus
检查代码中是否没有非ASCII字符。
我收到此错误,当我仔细查看时,发现我有:
update TABLE set SOMETHING = null where IDENTIFIER = ‘VALUE’
当我改变了
‘VALUE’
to
'VALUE'
即我使用香草ASCII直单引号而不是6和9引号...问题消失了。