请教大牛们 php能让生成的xml文件格式定死为unix utf-8格式吗
为什么我每次生成的都是 pc ANSI格式的
上代码:请大牛们帮我看下 怎么改就能让生成的文件格式是unix utf-8格式的,谢谢大哥大姐帮忙了:<?php
header("content-type:text/html;charset=utf-8");
$str = <<<EOF
<?xml version="1.0" encoding="utf-8"?>
<node>巴拉巴拉巴拉</node>
EOF;
//if(file_put_contents("F:/over.xml",$str)) {
// echo "yesyesyes";
//} else {
// echo "nononon";
//}$dh = fopen("f:/over.xml","w");
$dh2 = fwrite($dh,$str);
fclose($dh);
?>生成的文件 用editplus打开是pc ANSI格式的 我要生成的格式是unix utf-8的 祝好人有好报

解决方案 »

  1.   

    那你的这个php程序文件要保存为unix utf-8格式
      

  2.   

    代码中的内容的编码与该代码文件的编码一致,不是代码自己能控制的,代码自己只能控制字符串的编码,而且也是要从代码文件自身编码向其他编码转换,你既然用editplus按照ANSI保存,自然就是ANSI,你应该保存时就保存为UTF8编码。<?xml行应该指明utf8编码,还有就是http header里的content-type的charset。
      

  3.   

    大哥 你看了没有 你说的两点我都用过了 生成的文件格式还是pc ANSI 摆脱给我关键的回答啊
      

  4.   

    你的程序文件是 utf-8 的
    只要写的时候 $dh2 = fwrite($dh, "\xef\xbb\xbf" . $str); 就可以了如果是 gbk 的,需要转码
    $str = iconv('gbk', 'utf-8', $str);若要完全符合 unix 格式,还需要去掉‘回车’符
    $str = preg_replach("/[\r\n]+/s", "\n", $str);
      

  5.   

    大哥 按你说的办法执行了 生成的却是utf-8+格式的 大哥 求求你让我生成utf-8吧 我要的不是utf-8+的 有办法吗?
      

  6.   

    你是说不要 BOM 头是吧?把 "\xef\xbb\xbf" 去掉就行了
    "\xef\xbb\xbf" 就是 BOM 头
      

  7.   


    大哥 拿掉那个头生成的文件格式就变成UNIX ANSI了 我要的是UTF-8啊 难道真的没有办法?在线等
      

  8.   

    如果你的内容中没有中文的话 utf-8 和 ANSI 是一样的
    所以没有 BOM 时,是无法区分 这个'A'是 utf-8 的'A'还是 ANSI 的'A',因为他们的内码是一样的
      

  9.   

    大哥 我的内容中有中文的 你看我发的帖子内容就知道了
    内容中有:<node>巴拉巴拉巴拉</node>
    按你这么说 有中文应该是utf-8啊 奈何是ANSI啊 我的内容中肯定会有好多中文的 我只有一个要求就是生成的文件格式是utf-8(备注:不是utf-8+),csdn这么多星星人才 难道真的搞不定 继续在线等 大雨里跪求 今天就专门解决这个问题了
      

  10.   

    那就是你的程序文件不是 utf-8 编码的
      

  11.   

    程序文件是utf-8的 我检查过了 肯定是其他原因
      

  12.   

    没有其他原因,我在gbk环境中照样生成不带BOM的utf-8文件
      

  13.   

    把你要 写入的数据 转下编码呢,都转为utf-8呢