PHP页面是UTF-8,现有Sql语句中包含有中文减号,即“——”,需要把该减号转为gb2312后进行查询,但是使用iconv('utf-8', 'gb2312', '——')函数转换过后,结果为空!!!!!!!!!!这是什么BUG!!!!!如果转码不成功,有什么其它办法使得包含该中文减号的Sql能够成功在mssql中查询??

解决方案 »

  1.   

    你那个减号到了SQLServer是一个-还是两个“--”还似乎3个?
      

  2.   

    你这个是MYSQL吧 SET NAMES 'GBK'试试
      

  3.   


    转码后为空,所以Sql中也就没有减号了……直接在workbench中写Sql查询的话,包含几个中文减号都没有问题的,环境不一样。
      

  4.   

    那你用replace函数把——换成-
      

  5.   

    没遇到过,用cast(XX as nvarchar)再转试试
      

  6.   

    经查证:iconv在转换字符”—”到gb2312时会出错,如果没有ignore参数,所有该字符后面的字符串都无法被保存。不管怎么样,这个”—”都无法转换成功,无法输出。 另外mb_convert_encoding没有这个bug.(我的PHP没有该类库……)gb2312字符数量少,也许没有包含这个字符所致;可以转为GBK或是GB19030,但是发现转换后却依旧无法在mssql中查询出正确结果。并且还发现,mssql(GB2312编码)情况下,也不能由页面成功插入“—”。有其它方法欢迎提出。
    结贴!