我正在嘗試讀取XML文件,然後將獲得的值輸入到數據庫中。然後,只要XML中沒有特殊字符,整個過程就會很好。使用objDOM指示XML文件的編碼 - > load()
<link>
<name>Cech</name>
<club>Chelsea</club>
</link>
萬一name
標籤封裝像Suárez
一個名字,我得到的錯誤:Input is not proper UTF-8, indicate encoding ! Bytes: 0xE1 0x72 0x65 0x7A in file:///C:/wamp/www/ADB/links.xml, line: 1857 in C:\wamp\www\ADB\phptry.php on line 14
,其中線1857年的名稱爲Suárez
作爲XML的格式。我試圖在文件的開始處使用<?xml version="1.0" encoding="UTF-8"?>
,並使用utf8_encode(file_get_contents('links.xml'))
,但它不起作用。有什麼建議麼?這是我工作的PHP代碼:
<?php
$dbhost = 'localhost';
$dbuser = 'root';
$dbpass = '';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn)
{
die('Could not connect: ' . mysql_error());
}
$objDOM = new DOMDocument();
//$content = utf8_encode(file_get_contents('links.xml'));
$objDOM->load('links.xml'); //make sure path is correct
$note = $objDOM->getElementsByTagName("link");
// for each note tag, parse the document and get values for
// tasks and details tag.
foreach($note as $value)
{
$player = $value->getElementsByTagName("name");
$player_name = $player->item(0)->nodeValue;
$playername = addslashes($player_name);
$club = $value->getElementsByTagName("club");
$club_name = $club->item(0)->nodeValue;
// $points = $value->getElementsByTagName("points");
// $point_value = $points->item(0)->nodeValue;
$sql = "INSERT INTO pilayers (name,club) VALUES('$playername','$club_name')";
mysql_select_db('players');
$retval = mysql_query($sql, $conn);
if(! $retval)
{
die('Could not enter data: ' . mysql_error());
}
echo "Entered data successfully\n";
}
mysql_close($conn);
?>
作爲錯誤提示,它意味着該文件 「links.xml」 應當被編碼爲 「UTF-8」格式。你最好檢查文件格式並保存爲「utf-8」,而不是utf8_encode。 – fayhot
我確實在XML文件的開頭包含了<?xml version =「1.0」encoding =「UTF-8」?>'。 – beginner
甚至更多,<?xml version =「1.0」encoding =「utf-8」?>只是表示該文件應該用utf-8格式解析,然而,「link.xml」可能保存爲其他編碼格式不是utf8。 – fayhot