php+linux+mssql的中文SQL语句问题 在linux服务器下的一个php程序要对另外一个win2003服务器的mssql进行查询和插入数据操作,但是sql语句中包含了中文就执行失败,把中文去掉换成英文却一点问题都没有,高手们帮我想想解决办法啊。最好只用代码解决。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 插入值用放在'或"里面没有?你的程序是UTF8的编码吧? 插入值用放在'或"里面没有?你的程序是UTF8的编码吧?-----------------------------肯定是放在'或"里面了 用英文都没问题。set names 其它的编码都试过 不行! 晕 你是SQL ,SET NAMES 当然没用,这种问题应该是编码不对,程序执行时先用ICONV转换一下 用ICONV转换也没用 插入数据库以后都是问号。。 你的数据库编码是什么 ?插入之前用ICONV转化为GBK或者UTF8,如果是UTF8里面肯定是乱码。如果是数据库的编码是LATIN1的话,你set names gbk然后再查看肯定不是问号。 这个情况绝对是编码的问题。这里面涉及到了很多两个操作系统的不同之处,所以要好好想象到底两个的编码一样不一样,sql里面,好像不能直接设置数据库的编码的,所以,没有办法了,自己手动修改吧 修改什么地方呢?encoding也是插入数据库后变成????了。。 把读出来的数据转码(网上有现成的类),然后再生成sql语句, 调试步骤:1.先把读出来的字段值 echo出来。 如空,则sql语句有问题。如乱码看22.一定需要先确认数据库的编码与你php脚本的编码。 2.1: php脚本的编码用记事本打开,另存为时,文件名和类型下面的那行就是。 2.2: mssql的编码,先用企业管理器连上数据库查看相关字段是否在mssql里是乱码。如果是乱码的话,问题就确定了,mssql是不能用utf-8编码保存汉字。 解决步骤: 1).php脚本如果为utf-8则全部另存为gb2312编码。 2).在所有php文件前加入以下语句<? $sourceEncoding = "GB2312";//当前文件的编码格式 $targetEncoding = "UTF-8";//目标文件的输出格式 iconv_set_encoding("internal_encoding", $sourceEncoding); iconv_set_encoding("output_encoding", $targetEncoding); ob_start("ob_iconv_handler"); ?> 3).用iconv("UTF-8","GB2312",$var)查询数据库前先转换下编码3.如果上述方法无效,则注意是否反复调试,未及时更新的问题。一般编码的缓冲是需要更新一下浏览器的cookie或关闭一段时间后重新打开。 mysql 中,类似like查询功能,在线等 exit('Access denied');的作用 求高手赐解! PHP获取远程内容! 急:用PHP写一个函数过滤掉<p>和</p> 为什么这段代码不能读取文件呢 临时文件夹里面怎么看不到存储SESSIONID的那个COOKIE呢? 关于php查询数据库记录显示的问题 关于本地和服务器的图片拷贝问题! 如何用php实现歌曲的连续播放? php ioncube9如何解密 头疼的php配置 菜鸟--如何区分客户端和服务器端(如何设计)
-----------------------------
肯定是放在'或"里面了 用英文都没问题。
set names 其它的编码都试过 不行!
如果是数据库的编码是LATIN1的话,你set names gbk然后再查看肯定不是问号。
1.先把读出来的字段值 echo出来。 如空,则sql语句有问题。如乱码看22.一定需要先确认数据库的编码与你php脚本的编码。
2.1: php脚本的编码用记事本打开,另存为时,文件名和类型下面的那行就是。
2.2: mssql的编码,先用企业管理器连上数据库查看相关字段是否在mssql里是乱码。如果是乱码的话,问题就确定了,mssql是不能用utf-8编码保存汉字。
解决步骤: 1).php脚本如果为utf-8则全部另存为gb2312编码。
2).在所有php文件前加入以下语句<?
$sourceEncoding = "GB2312";//当前文件的编码格式
$targetEncoding = "UTF-8";//目标文件的输出格式
iconv_set_encoding("internal_encoding", $sourceEncoding); iconv_set_encoding("output_encoding", $targetEncoding);
ob_start("ob_iconv_handler");
?> 3).用iconv("UTF-8","GB2312",$var)查询数据库前先转换下编码3.如果上述方法无效,则注意是否反复调试,未及时更新的问题。一般编码的缓冲是需要更新一下浏览器的cookie或关闭一段时间后重新打开。