加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > PHP教程 > 正文

Php / ODBC编码问题

发布时间:2020-12-13 13:41:34 所属栏目:PHP教程 来源:网络整理
导读:我使用ODBC从 PHP连接到SQL Server. 在PHP中,我从SQL Server读取了一些字符串(nvarchar列)数据,然后将其插入到mysql数据库中.当我尝试将这样的值插入mysql数据库表时,我得到了这个mysql错误: Incorrect string value: 'xB3xB9ow...' for column 'name' at
我使用ODBC从 PHP连接到SQL Server.
在PHP中,我从SQL Server读取了一些字符串(nvarchar列)数据,然后将其插入到mysql数据库中.当我尝试将这样的值插入mysql数据库表时,我得到了这个mysql错误:
Incorrect string value: 'xB3xB9ow...' for column 'name' at row 1

对于包含所有ASCII字符的字符串,一切都很好,当存在非ASCII字符(来自某些欧洲语言)时会出现问题.

因此,更一般地说:MS SQL Server数据库中有一个Unicode字符串,由PHP通过ODBC检索.然后将它放入sql insert查询(作为utf-8 varchar列的值),这是为mysql数据库执行的.

有人可以向我解释在这种情况下编码方面发生了什么吗?在哪一步可以进行字符编码转换?

我使用:PHP 5.2.5,MySQL5.0.45-community-nt,MS Sql Server 2005.

PHP必须在Linux平台上运行.

更新:当我在此字符串上调用utf8_encode($s)并在mysql插入查询中使用该值时,不会发生错误,但插入的字符串在mysql数据库中无法正确显示(因此utf8编码仅适用于强制执行正确的utf8字符串,但它丢失了正确的字符).

首先,您拥有数据库的编码.然后,您具有ODBC客户端使用的编码.

如果ODBC客户端连接的编码与DB的编码不匹配,则在某些情况下,ODBC层将自动转换数据.

这里的技巧是强制ODBC客户端连接的编码.

对于“所有UTF-8”设置:

$conn=odbc_connect(DB_DSN,DB_USR,DB_PWD);
odbc_exec($conn,"SET NAMES 'UTF8'");
odbc_exec($conn,"SET client_encoding='UTF-8'");

// processing here

这与PostgreSQL Php 5.x完美配合.
确切的语法和选项取决于数据库供应商.

您可以在这里找到非常有用且清晰的MySql附加信息:http://dev.mysql.com/doc/refman/5.0/fr/charset-connection.html

希望这可以帮助.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读