PHP文件不在UTF-8中保存XML

PHP文件不在UTF-8中保存XML,php,xml,utf-8,Php,Xml,Utf 8,我尝试通过PHP将MySQL数据库导出到XML文件中 一切正常,但创建文件后 编码有问题。 在正确打开它之前,我必须打开记事本/gedit 并将其保存为UTF-8转换。 我尽一切努力用UTF-8保存文件,但没有成功 已加工。(它是ISO-8859-15)转换:() 我是德国人,所以我用德语来表示变量,很抱歉。 所以我希望你能帮助我 谢谢, 竹叶茶 PS:我用XMLWriter尝试了一个小例子,在那里效果更好,但是 编写代码比较难,不是吗 class xmlschema{ public func

我尝试通过PHP将MySQL数据库导出到XML文件中

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

我尽一切努力用UTF-8保存文件,但没有成功 已加工。(它是ISO-8859-15)转换:()
我是德国人,所以我用德语来表示变量,很抱歉。

所以我希望你能帮助我

谢谢,
竹叶茶

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);
}

}
类xmlschema{
公共函数构造(){
$datenbankname='filmdatenbank';
$db_link=mysqli_connect(“localhost”、“root”);
如果(!$db\u链接)
{
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);
}
专用函数sqlToXmlConverter($db\u link){
$dom=新的DOMDocument('1.0','UTF-8');
$dom->formatOutput=true;
$root=$dom->createElement(“filme”);
$dom->appendChild($root);
$sql\u query\u film=“选择*来自Filme;”;
$handle1=mysqli\u query($db\u link,$sql\u query\u film);
if(mysqli_num_行($handle1)==0){
echo“Die Eingegebene ID.”.$ID.”是在Datenbank nicht vorhanden。

“我是欧内斯特。”; } while($row=mysqli\u fetch\u对象($handle1)) { //艾因菲勒根电影 $root->appendChild($film=$dom->createElement(“film”); $film->setAttribute(“id”,$row->id); $name\u de=$dom->createElement(“name\u de”,$row->name\u de); $name\u en=$dom->createElement(“name\u en”,$row->name\u en); $film->appendChild($name\u de); $film->appendChild($name\u en); $film->appendChild($dom->createElement(“laufzeit”),“”.$row->laufzeit)); $film->appendChild($dom->createElement(“einspielergebnis”), $row->einspielergebnis); //绍斯皮尔·埃因普费勒根 $sql\u query\u schaupieler=” 选择vorname、nachname、geburtstag、geburtsort、geburtsland 来自Personen,Film_Schauspieler 哪里 Personen.id=film\u schaupieler.person\u id 和 Film_schaupieler.Film_id=“.$row->id.”; $handle2=mysqli\u query($db\u link,$sql\u query\u schaupiler); $film->appendChild($schaupieler=$dom->createElement(“schaupieler”); while($row2=mysqli\u fetch\u对象($handle2)){ $schaupieler->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_免费_结果($handle2); //艾因普费勒根生产公司 $sql\u查询\u产品=” 选择vorname、nachname、YEAR(geburtstag)作为geburtsjahr 来自Personen,电影制片公司 哪里 Personen.id=电影制作人person\u id 和 Film_producent.Film_id=“.$row->id.”; $handle2=mysqli\u query($db\u link,$sql\u query\u producent); 如果(mysqli_num_行($handle2)>0){ $film->appendChild($produzent=$dom->createElement(“produzent”); while($row2=mysqli\u fetch\u对象($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_免费_结果($handle2); //音乐演奏家艾因普费莱根 $sql\u查询\u音乐管理员=” 选择vorname、nachname、YEAR(geburtstag)作为geburtsjahr 来自Personen,电影音乐编剧 哪里 Personen.id=电影音乐编剧.person\u id 和 Film_musikcompanist.Film_id=“.$row->id.”; $handle2=mysqli\u查询($db\u链接,$sql\u查询\u音乐管理员); 如果(mysqli_num_行($handle2)>0){ $film->appendChild($musikcompanist=$dom->createElement(“musikcompanist”); while($row2=mysqli\u fetch\u对象($handle2)){ $musikcompanist->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_免费_结果($handle2); } $dom->save(“./ausgabe.xml”); mysqli_免费_结果($handle1); } }
我认为您的mysqli_set_charset()可能不正确-请尝试
mysqli_set_charset($db_link,“utf8”),而不是
UTF-8
。谢谢。现在效果很好:)