重庆分公司,新征程启航
为企业提供网站建设、域名注册、服务器等服务
今天使用php操作数据库时发现插入SQLServer2008数据库里的中文字段出现乱码,下面是我一开始时的一些情况:开发环境是php5.3.3+Apache2.2.17+SQLServer2008,php脚本文件的编码是utf-8,传给数据库的编码是GB2312(SQLServer的默认字符编码可能是这个,我不肯定),我用的是微软官方提供的SQLSRV库来连接数据库的(PS:SQLServer2005开始已经不支持用mssql.dll来连接了),故使用sqlsrv_query($conn,"setnamesGB2312");语句来设置传给数据库的编码格式的,sql语句这样写了:insertintoOpinion(content)values('aaa中文内容');运行这条sql语句,发现执行不成功,用sqlsrv_errors()函数来输出错误信息,得到如下结果:复制代码代码如下:Array([0]=Array([0]=IMSSP[SQLSTATE]=IMSSP[1]=-46[code]=-46[2]=AnerroroccurredtranslatingthequerystringtoUTF-16:�ڶ��ֽڵ�Ŀ�����ҳ�У�û�д�Unicode�ַ����ӳ�䵽���ַ�.[message]=AnerroroccurredtranslatingthequerystringtoUTF-16:�ڶ��ֽڵ�Ŀ�����ҳ�У�û�д�Unicode�ַ����ӳ�䵽���ַ�.))这是在网页上显示的结果,上面的乱码是原封不动copy下来的。从“AnerroroccurredtranslatingthequerystringtoUTF-16”可以看出是字符编码转换有问题导致的。于是我使用php的iconv函数来对中文进行强制编码转换,然后执行sql语句,代码如下:复制代码代码如下:$string=iconv('utf-8','GB2312//IGNORE','aaa中文内容');$sql="insertintoOpinion(content)values($string)";[code]这时候又报错了,错误信息如下:[code]Array([0]=Array([0]=42S22[SQLSTATE]=42S22[1]=207[code]=207[2]=[Microsoft][SQLServerNativeClient10.0][SQLServer]����'aaa��������'��Ч��[message]=[Microsoft][SQLServerNativeClient10.0][SQLServer]����'aaa��������'��Ч��))这个错误信息看不出什么头绪,我又把sql语句输出到网页上看一下是不是sql语句写错了,输出结果如下:复制代码代码如下:insertintoOpinion(content)values(aaa��������)咋一看好像没问题,其实是有问题的,注意到后面那个括号里的参数是应该用引号来括起来的(表示它是一个字符串),所以我又修改了sql语句,代码如下:复制代码代码如下:$sql="insertintoOpinion(content)values('".$string."')";为了看清楚我放大点用单引号把$string括起来,这样之后执行sql语句成功,并且数据库里保存的中文没有乱码。
创新互联-专业网站定制、快速模板网站建设、高性价比米易网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式米易网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖米易地区。费用合理售后完善,10余年实体公司更值得信赖。
先将分子或分母或两个都转化成8小数精度以上的类型,decimal,numeric,float 都可以。
然后做除法计算,将计算结果转化为8位小数。
select convert(decimal(18,8), convert(decimal(18,8),1)/3)
select convert(decimal(18,8), 1/convert(decimal(18,8),3))
select CONVERT(decimal(18,8), convert(float,1)/3)
select CONVERT(decimal(18,8), 1/convert(float,3))
win8安装sqlserver的注意事项:
1、
安装的时候要以管理员的身份进行,右击安装程序图标然后选择以管理员身份运行
2、
如果机器上已经有vs(特别是高版本的vs),要先卸载vs,然后再安装sqlserver,(注意这个地方需要到控制面板-程序功能中看看是否有visual
studio,有可能是系统自带了,或则其他程序
自动安装了vs)
3、
有的时候安装的过程,程序可能提示错误然后让你重启机器,但是重启机器问题依旧,一般都是挂起问题,这个问题出在很多操作系统的各个版本的sqlserver,这时候删除注册表信息
a.开始菜单,运行,输入regedit.exe打开注册表
b.打开注册表编辑器,选择hkey_local_machine/system/currentcontrolset/control/session
manager中找到pendingfilerenameoperations项目,并删除它。
c.打开安装程序,就可以安装啦!