php如何生成utf-8的html文件??注意不是简单地加<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> ,而是生成文件后用记事本打开另存为后编码自动为utf-8 。 

解决方案 »

  1.   

    PHP本身是无编码的,所有的字符串通常都视为二进制流。因此只需要输入的字符串为Utf-8即可。若字符串采用其他编码,可以使用iconv系列函数转换编码。
      

  2.   

     fwrite ($f,"\xEF\xBB\xBF".iconv('gbk','utf-8',$html));
      

  3.   

    简单的,插入中文,就会自动utf-8了
      

  4.   


     " \xEF\xBB\xBF "把HTML文件头部空格解决了,不会产生页面空行,或者排版问题
      

  5.   

    如果用工具的话比较简单吧,如php-Eclipse:
    在菜单栏window->preferences,在弹出的对话框中:General->Workspace,在右边的Text file encoding下
    点击other下拉框,里面选择utf-8,然后点击ok。这样在生成的php文件中都是utf-8的编码。
      

  6.   

    utf-8,在html文件中加入<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />不久好了,然后给你个生成静态html的类
    <?php
    /******************8PHP静态类*************/
    class Shtml
    {
       var $Templet;
       var $DataSource;
       var $Dir;   var $fileName;
       var $mod;
       var $handle;   function Shtml($fileName = "")
       {
       $this->fileName = $fileName;
       $this->mod = "wb";
       $this->handle = false;   $this->Templet = "";
       $this->DataSource = array();
       $this->Dir = "";
       }   // 绑定数据源,参数为一数组
       function BindData($arr)
       {
       $this->DataSource = $arr;
       }   // 设置文件存放路径
       function SetDir($dir)
       {
       $this->Dir = $dir;
       }
       function SetFileName($fileName)
       {
       return $this->fileName = $fileName;
       }   function GetMod()
       {
       return $this->mod;
       }
       function SetMod($mod)
       {
       return $this->mod = $mod;
       }
       function Open()
       {
       if (substr($this->fileName, 0, 1) == "/")
       $this->fileName = $_SERVER['DOCUMENT_ROOT'] . $this->fileName;
       if ($this->handle = fopen($this->fileName, $this->mod))
       return $this->handle;
       else
       return false;
       }
       function Close()
       {
       return fclose($this->handle);
       }
       function Write($content)
       {
       return fwrite($this->handle, $content);
       }
       function MkDir($pathname)
       {
       $currentPath = "";
       str_replace("\\", "/", $pathname);
       $pathArr = split("/", $pathname);
       if ($pathArr[0] == "") { //使用绝对路径
       $currentPath = $_SERVER['DOCUMENT_ROOT'];
       } else {
       $currentPath = $_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']);
       }
       for ($i = 0; $i < count($pathArr); $i++) {
       if ($pathArr[$i] == "")
       continue;
       else
       if (is_dir($currentPath . " / " . $pathArr[$i]))
       $currentPath = $currentPath . " / " . $pathArr[$i];
       else
       mkdir($currentPath = $currentPath . " / " . $pathArr[$i]);
       }
       }   // 生成静态文件
       function Create()
       {
       $tmp = $this->Templet;
       foreach ($this->DataSource as $key => $value) {
       $tmp = str_replace(" < FIELD_" . $key . " > ", $value, $tmp);
       }
       $this->MkDir(dirname($this->fileName));
       $this->Open();
       $this->Write($tmp);
       $this->Close();
       }
    }function CreateShtml() {
       ob_start("callback_CteateShtml");
    }function callback_CteateShtml($buffer) {
       $page = intval(@$_REQUEST["page"]);
       $shtml = new Shtml();
       $shtml->SetFileName($_SERVER['DOCUMENT_ROOT'] . dirname($_SERVER['PHP_SELF']) . "/" . basename($_SERVER['PHP_SELF'], ".php") . ($page == 0 ? "" : "_" . strval($page)) . ".html");
       $shtml->Templet = $buffer;
       $shtml->Create();
       return $buffer;
    }
    ?>用这个类生成静态文件
      

  7.   

    如何使得其输入的字符串为Utf-8?
      

  8.   

    用这种方法确定可以生成utf-8编码格式的文件,但是只要字符串里面出现中文就会变成乱码,这怎么解决?源代码如下:<?php 
    $html = "
    <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
    <html xmlns=\"http://www.w3.org/1999/xhtml\">
    <head>
    <meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
    <title>用户登陆</title>
    </head>
    <body>
    <form name=\"UserLogin\" action=\"chklogin.php\" method=\"post\" enctype=\"application/x-www-form-urlencoded\" >
    用户名:<input name=\"username\" type=\"text\" />
    密码:<input name=\"passowrd\" type=\"password\" />
    <button type=\"submit\">登陆</button>
    </form>
    </body>
    </html>";$file = fopen("test.html","w");
    fwrite ($file,"\xEF\xBB\xBF".iconv('gbk','utf-8',$html));
    fclose($file);
    ?>
      

  9.   

    to #10: 说明你的PHP程序并不是gbk编码的
      

  10.   

    问题解决了
    把fwrite ($file,"\xEF\xBB\xBF".iconv('gbk','utf-8',$html))
    改为
    fwrite ($file,"\xEF\xBB\xBF".iconv('utf-8','utf-8',$html))
    即可解决中文乱码。
      

  11.   

    fwrite ($file,"\xEF\xBB\xBF".iconv('utf-8','utf-8',$html))
    这里就是传说中的脱裤子放屁
      

  12.   

    表面看来是多余的,不需要iconv只要有中文就自动写为utf-8,但没加iconv没中文就变为ansi了。只有这样才能保证无论有无中文都生成为utf-8编码。需要是个屁,但够响,能响就好。