在linux服务器下的一个php程序要对另外一个win2003服务器的mssql进行查询和插入数据操作,但是sql语句中包含了中文就执行失败,把中文去掉换成英文却一点问题都没有,高手们帮我想想解决办法啊。最好只用代码解决。
解决方案 »
- c++模拟post php接收问题
- 我想问一下,如果要做类似下面的网站,都需要用什么来做
- 有懂htaccess的人么 进来看看 子域名简单问题
- Zend Studio for Eclipse 有人在用不 ,感觉如何
- 新人求帮助~~~~~~~~~~~~~~~~~~~~~~~~~~~~
- 请大家帮忙分析下原因,不能修改SQL中字段内容
- 想在PHP下调xp
- 用fgets()读取txt文件每一行,怎么能够把每行中<>内部的字符串读出来啊?
- ♥♥♥♥php高手救急 ,php与oracle8 在 win2000下的连接问题???急救♠♠♠
- PHP如何操作浏览器的自动完成功能?
- 头疼的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或关闭一段时间后重新打开。