2013-12-08 45 views
0

我正在嘗試讀取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); 
?> 
+0

作爲錯誤提示,它意味着該文件 「links.xml」 應當被編碼爲 「UTF-8」格式。你最好檢查文件格式並保存爲「utf-8」,而不是utf8_encode。 – fayhot

+0

我確實在XML文件的開頭包含了<?xml version =「1.0」encoding =「UTF-8」?>'。 – beginner

+0

甚至更​​多,<?xml version =「1.0」encoding =「utf-8」?>只是表示該文件應該用utf-8格式解析,然而,「link.xml」可能保存爲其他編碼格式不是utf8。 – fayhot

回答

0

錯誤說明xml文件不是用UTF-8編碼的。你在PI指令中聲明瞭編碼,但這並不意味着你的編輯器真的保存了utf-8。

如何更改編碼取決於您的編輯器/ ide。

  • 蝕:Edit - >Set Encoding
  • PHPStorm:File - >File Encoding