一、问题:
数据库是ms sqlserver2000,要把sqlserver2000里的一张表的数据导入mysql5,其中sqlserver2000表的字段以简体中文命名(强烈建议不要以中文做为字段名)。其实操作就是对sqlserver查询记录,插入到mysql里。选择的脚本语言是php,php打开mssql和mysql扩展,对这两个数据库操作都是很容易的问题。
问题就出现在sqlserver中表的字段名是中文,写好的查询语句在sqlserve里测试是通过有记录返回,用php的mssql扩展查询就是报错。
上网查了资料,网上相关的信息不太多,很多网友都认为是php的mssql扩展不支持sql语句中有中文。查了一下资料,php的mssql是支持sql中有中文的语句。出现报错问题大多是因为编码的问题,编码数据库和编码与查询语句编码不统一,查询语句到sqlserver里中文部分就成了乱码,造成查询失败。
二、解决方法:
知道了原因,接下来分析解决,确认是编码不统一的问题。解决分以下几步:
1、确认sqlserver 数据库的编码,我的数据编码是gbk。
2、确认当前php脚本文件的编码,我的编码是utf-8。
3、转换sql查询语句的的编码。
补充:有的网友提到要把php的脚本文件编码转成和数据库编码一致,其实这一步大可不必,只要确认你的sql语句和数据库的编码一致就可以,这里建议不必转换的原因是如果你的php脚本文件里包含其它php脚本,那也得对所有include或require的脚本文件编码转换,不然php脚本编码不统一很容易出错,若互相关联的文件很多,这也是一件很麻烦的问题而且把事情复杂化了。
三、方案:
写一个转换函数,在把sql操作前把sql语句编码转换。下面贴出我的范例代码:
复制代码 代码如下:
//编码转换函数
function utf8togb($s) {
return iconv('utf-8', 'gbk//ignore', $s); // ignore 参数是遇到不成转换的字符时忽略
}
//建议把所有中文字段用英文别名替换,方便下面操作还有编码转换等问题
$sql="select [id], [栏目] as typeid, [正题] as title, [作者] as author, convert(text, [正文]) as body from [文章表];";
$sql = utf8togb($sql);
0
0
本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
热门AI工具
相关专题
2026赚钱平台入口大全
2026年最新赚钱平台入口汇总,涵盖任务众包、内容创作、电商运营、技能变现等多类正规渠道,助你轻松开启副业增收之路。阅读专题下面的文章了解更多详细内容。
27
2026.01.31
无需付费的漫画app大全
想找真正免费又无套路的漫画App?本合集精选多款永久免费、资源丰富、无广告干扰的优质漫画应用,涵盖国漫、日漫、韩漫及经典老番,满足各类阅读需求。阅读专题下面的文章了解更多详细内容。
16
2026.01.31
漫画免费在线观看地址大全
想找免费又资源丰富的漫画网站?本合集精选2025-2026年热门平台,涵盖国漫、日漫、韩漫等多类型作品,支持高清流畅阅读与离线缓存。阅读专题下面的文章了解更多详细内容。
2
2026.01.31
php如何运行环境
本合集详细介绍PHP运行环境的搭建与配置方法,涵盖Windows、Linux及Mac系统下的安装步骤、常见问题及解决方案。阅读专题下面的文章了解更多详细内容。
0
2026.01.31
php环境变量如何设置
本合集详细讲解PHP环境变量的设置方法,涵盖Windows、Linux及常见服务器环境配置技巧,助你快速掌握环境变量的正确配置。阅读专题下面的文章了解更多详细内容。
0
2026.01.31
热门下载
相关下载
精品课程
相关推荐
/
热门推荐
/
最新课程






