一、问题:
数据库是MS SQLServer2000,要把SQLServer2000里的一张表的数据导入MySQL5,其中SQLServer2000表的字段以简体中文命名(强烈建议不要以中文做为字段名),其实操作就是对SQLServer查询记录,插入到MySQL里,选择的脚本语言是PHP,PHP打开MSSQL和MySQL扩展,对这两个数据库操作都是很容易的问题.
问题就出现在SQLServer中表的字段名是中文,写好的查询语句在SQLServe里测试是通过有记录返回,用PHP的MSSQL扩展查询就是报错。
二、解决方法:
知道了原因,接下来分析解决,确认是编码不统一的问题,解决分以下几步:
1、确认SQLServer 数据库的编码,我的数据编码是GBK.
2、确认当前PHP脚本文件的编码,我的编码是UTF-8.
3、转换SQL查询语句的的编码.
三、方案:
写一个转换函数,在把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 [文章表];";
//开源代码Cuoxin.com
$sql = utf8togb($sql);
大型站长资讯类网站!