PHP文件不能以UTF-8保存XML

时间:2014-01-10 14:31:38

标签: php xml utf-8

我尝试通过PHP将我的MySQL数据库导出为XML文件。

一切正常,但在创建文件之后 编码问题 在我正确打开它之前,我必须打开记事本/ gedit 并保存UTF-8转换。

我尝试了一切以使用UTF-8保存文件,但没有 工作。(它是ISO-8859-15)转换:()
Iam德语所以我使用德语单词作为变量,对不起。

所以我希望你能帮助我。

谢谢,
BamBooCha

PS:我尝试了一个XMLWriter的小例子,它的效果更好,但是 编码更难,不是吗?

class xmlschema{

public function __construct() {

        $datenbankname = 'filmdatenbank';
        $db_link = mysqli_connect("localhost", "root");
        if (!$db_link)
        {
            die('Fehler: '. mysqli_connect_errno());
        }
        mysqli_select_db($db_link, $datenbankname);
        mysqli_set_charset($db_link, "UTF-8");
        $this->sqlToXmlConverter($db_link);
        mysqli_close($db_link);
    }

private function sqlToXmlConverter($db_link) {
    $dom = new DOMDocument('1.0','UTF-8');
    $dom->formatOutput = true;

    $root = $dom->createElement("filme");
    $dom->appendChild($root);

    $sql_query_film = "Select * From Filme;";

    $handle1 = mysqli_query($db_link, $sql_query_film);

    if (mysqli_num_rows($handle1)== 0){
       echo "Die Eingegebene ID '".$id ."' ist in der Datenbank nicht vorhanden.
           <br> Versuchen sie es erneut.";
   }

   while ($row = mysqli_fetch_object($handle1))
   {
       //film einpfelegen
       $root->appendChild($film = $dom->createElement("film"));
       $film->setAttribute("id", $row->id);
       $name_de = $dom->createElement("name_de",$row->name_de);
       $name_en = $dom->createElement("name_en",$row->name_en);
       $film->appendChild($name_de);
       $film->appendChild($name_en);
       $film->appendChild($dom->createElement("laufzeit", "".$row->laufzeit));
       $film->appendChild($dom->createElement("einspielergebnis", 
               $row->einspielergebnis));

       //schauspieler einpfelegen
       $sql_query_schauspieler = "
        Select vorname, nachname, geburtstag, geburtsort, geburtsland 
        from Personen, Film_Schauspieler
        where 
        Personen.id = film_Schauspieler.person_id 
        and
        Film_Schauspieler.film_id = ".$row->id.";";

       $handle2 = mysqli_query($db_link, $sql_query_schauspieler);

       $film->appendChild($schauspieler = $dom->createElement("schauspieler"));

        while ($row2 = mysqli_fetch_object($handle2)) {
            $schauspieler->appendChild($person = $dom->createElement("person"));
            $person->appendChild($dom->createElement("nachname", $row2->nachname));
            $person->appendChild($dom->createElement("vorname", $row2->vorname));
            $person->appendChild($dom->createElement("geburtstag", $row2->geburtstag));
            $person->appendChild($dom->createElement("geburtsort", $row2->geburtsort));
            $person->appendChild($dom->createElement("geburtsland", $row2->geburtsland));
        }
       mysqli_free_result($handle2);

       //produzent einpfelegen
       $sql_query_produzent = "
        Select vorname, nachname, YEAR(geburtstag) as geburtsjahr
        from Personen, Film_Produzent
        where
        Personen.id = Film_Produzent.person_id
        and
        Film_Produzent.film_id = ".$row->id.";";

       $handle2 = mysqli_query($db_link, $sql_query_produzent);

       if (mysqli_num_rows($handle2) > 0){
           $film->appendChild($produzent = $dom->createElement("produzent"));

           while ($row2 = mysqli_fetch_object($handle2)) {
                $produzent->appendChild($person = $dom->createElement("person"));
                $person->appendChild($dom->createElement("nachname", $row2->nachname));
                $person->appendChild($dom->createElement("vorname", $row2->vorname));
                $person->appendChild($dom->createElement("geburtsjahr", $row2->geburtsjahr));
           }

        }
        mysqli_free_result($handle2);

        //musikkomponist einpfelegen
       $sql_query_musikkomponist = "
        Select vorname, nachname, YEAR(geburtstag) as geburtsjahr
        from Personen, Film_Musikkomponist
        where
        Personen.id = Film_Musikkomponist.person_id
        and
        Film_Musikkomponist.film_id = ".$row->id.";";

       $handle2 = mysqli_query($db_link, $sql_query_musikkomponist);

       if (mysqli_num_rows($handle2) > 0){
           $film->appendChild($musikkomponist = $dom->createElement("musikkomponist"));

           while ($row2 = mysqli_fetch_object($handle2)) {
                $musikkomponist->appendChild($person = $dom->createElement("person"));
                $person->appendChild($dom->createElement("nachname", $row2->nachname));
                $person->appendChild($dom->createElement("vorname", $row2->vorname));
                $person->appendChild($dom->createElement("geburtsjahr", $row2->geburtsjahr));
           }

        }
        mysqli_free_result($handle2);
   }

   $dom->save("./ausgabe.xml");
   mysqli_free_result($handle1);
}

}

0 个答案:

没有答案