php字符串编码问题

  今天,因为一个网站的排版flash图片要操作一个xml,主要是从数据库里获取出图片名、ID、图片地址。因为对xml的操作不太熟悉,而且又不用进行节点操作,所以,就直接采用文件操作方式,打开xml文件,然后把获取出来的记录,按xml的格式写进去。本来以为是挺简单的一件事,谁知却在这里折腾了半天:xml文件格式写对了,xml文件里和flash里的中文,全部成了乱码!

      气煞!肯定是编码问题!马上在代码中加入:header("Content-Type:text/html;charset=GB2312");

       测试……

      xml里成功写入了中文!擦了一把汗,刚想庆祝一下,刷新首页一看,晕!还是乱码。。。

      干啥子哩?!

       用DW打开xml,随便加入一个空格,保存。刷新一下,再晕!flash里的中文居然正常显示了!

      抓破了脑袋,终究想不出何解。遂以为只要在文件写入时加入一个空格就可以解决问题,所以试着在写入文件后追加一个空格:

         $file="xml/bcastr.xml";//xml文件位置
         $f=fopen($file,"a");//第二个参数为a时,为追加方式打开文件。
         fwrite($f," ");//追加一个空格
         fclose($f);//关闭文件

        满怀希望的刷新一下,结果可想而知……

        无奈之下,甚至想出要用php输出js来操作xml了。但想到为了这么一点数据,又建xmldoc对象,又生成节点,删除节点的,确实很麻烦,只好又上网搜寻原因。

       偶然中,发现,原来如果用记事本打开这个xml文件,无论在里面加入多少个空格,然后保存flash里都会显示为乱码的。认真看了一下,发现,原来,保存时,记事本默认是采用ANSI编码的。会不会是这个导致显示不正常的呢?

       于是尝试着用UTF-8保存。刷新,显示正常了!看来,可能是fwrite时,php把内容作为ANSI编码方式写入了。那么只要在写入里,按照UTF-8方式写入就应该可以了吧。但怎样才能把文件作为UTF-8方式写入呢?

        搜寻中……

        答案:iconv("GB2312","UTF-8",$content)//把字符串的内容$content由GB2312转换为UTF-8

        哈,,看来还不“搞掂”?!一边暗笑,一边在fwrite($f,$content)前加入iconv("GB2312","UTF-8",$content)

        刷新……

        吐血,还不行!!PHP傻了吗?!

        不甘心之余,忽然想到,是不是把iconv("GB2312","UTF-8",$content)加到fwrite中好点呢?马上尝试之:fwrite($f,iconv("GB2312","UTF-8",$content));

       测试……

      结果,,嘿,,可想而知啦。。

      终于松了口气!有时,真给编程气个半死,呵,,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值