使用objDOM指示XML文件的编码 - > load()

时间:2013-12-08 00:40:35

标签: php xml utf-8

我正在尝试读取XML文件,然后将获取的值输入到数据库中。只要XML中没有特殊字符,整个过程就会很好。 XML格式为:

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

1 个答案:

答案 0 :(得分:0)

错误表明xml文件未在utf-8中编码。您在PI指令中声明了编码,但这并不意味着您的编辑器确实保存了utf-8。

如何更改编码取决于您的编辑器/ ide。

  • Eclipse:Edit - &gt; Set Encoding
  • PHPStorm:File - &gt; File Encoding