为了解决中文乱码,我先用windows记事本手工创建了一个XML文件,并以utf-8编码保存,这个文件用simpleXML读取显示没有问题。而我需要向XML里面添加带中文的记录,添加也成功了,但是当用$xml->asXML("myxml.xml")保存后,XML文件被这个语句自动存成了ANSI编码格式的文件,这导致了下次再打开时出现问题所以如何能在asXML写回XML文件时不被它改变文件编码?或是在写回时能够自己设置文件编码?

解决方案 »

  1.   

    在xml头中指定utf-8试试
    另外,你中文的数据,在添加的之前要转成utf-8的。
      

  2.   

    我试着在中文内容添加之前转成utf-8,$s=iconv('gbk','utf-8','张三') 这个起作用,可以解决问题。不过这个转换前的编码可以永远是GBK吗?我的程序要移植到其它服务器环境下使用,到时候要把输入中文的语句逐个更改转换前的编码可受不了啊
      

  3.   

    xml 不是有文件头嘛?
    <?xml version=”1.0″ encoding=”gbk”?>
    注意文件也要保存成ANSI编码格式的.
      

  4.   

    <?xml version="1.0" encoding="gbk" ?>
    不过我还是建议你用utf-8
      

  5.   

    xml文件头的类型决定文件是存成ANSI还是utf-8的格式。
    simplexml处理结点信息的时候返回的都是utf-8的格式,这个你一定要注意。
    自己尝试一下吧。
      

  6.   

    唉!如果在xml文件头中定义编码真有那么大的效果,我的问题也就不会出现了
    事实上不论你怎么定义文件头编码,也不论你的文件原来以什么编码保存,只要后来添加或修改的中文不做iconv,写回文件时simplexml就帮着变会了ANSI——至少我在windows下是这样
      

  7.   

    simplexml修改结点的时候,数据必须是utf-8的,要不然会报错。