php生成XML如何加BOM
由于输出的xml用于给flash调用的,现在输出的XML不带BOM的,会出现乱码。请求怎么加bom上去: $dom = new DOMDocument("1.0","utf-8"); 
header("Content-Type: text/html; charset=unicode");
//items
$root = $dom->createElement("items"); 
$dom->appendChild($root); 
//count
$count = $dom->createAttribute("count"); 
$root->appendChild($count); 
$count_value = $dom->createTextNode("6"); 
$count->appendChild($count_value); 

//item
$item = $dom->createElement("item"); 
$root->appendChild($item); 
$text = $dom->createTextNode($content); $item->appendChild($text); 
//id
$id = $dom->createAttribute("id"); 
$item->appendChild($id); 
$idValue = $dom->createTextNode("156"); 
$id->appendChild($idValue); 
//title
$title = $dom->createAttribute("title"); 
$item->appendChild($title); 
$titleValue = $dom->createTextNode("test"); 
$title->appendChild($titleValue); 
$content=$dom->saveXML();

解决方案 »

  1.   

    $bom = pack("C3",239,187,191);帮楼主搜索了哈
    看看这里http://blog.csdn.net/cheng830306/article/details/6043303
      

  2.   

    互联网真好,什么东西都可以学到
    互联网真坏,良莠不齐,误人子弟你有
    $dom = new DOMDocument("1.0","utf-8"); 
    header("Content-Type: text/html; charset=unicode");你在一个文档中声明了两个不同的编码标准,估计连你自己都不知道在之后的输出中该采用那个标准了我知道但我现在也找不到权威的说明了,所以只能我说我的你信你的了
    utf系列是基于早期美国工业化标准体系的,被欧洲广泛接受,是 ISO 标准体系的基础
    unicode是现代美国计算机业界提出的新的替代性的标准。由于早期知识的限制,规则制定存在局限性,不能适应科学技术的发展,比如:汉字在其给则的约束下,只能以3个字节表示(就是utf-8)但实际上,绝大多数汉字只需两个字节就可表示了。鉴于这种资源浪费,微软为首的计算机软件业极力主张修改原有的标准(当然也是为了推广他的双字节操作系统),于是unicode便诞生了
    这些都是题外话了你创建的是utf-8(汉字三字节)的XML文档,却在传输时告知为unicode(两字节),你说能不出错吗?
      

  3.   

    楼上那上我测试的,没改过来。。那里也是utf-8的,复制的时候没改回来
      

  4.   

    你是说我的#2的回复吗?adobe公司没有那么弱智,只要你不去声明传输时的语言类型,他会自动识别的