PHP文件不在UTF-8中保存XML
我尝试通过PHP将MySQL数据库导出到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
在正确打开它之前,我必须打开记事本/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
。谢谢。现在效果很好:)