我正在尝试读取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);
?>
答案 0 :(得分:0)
错误表明xml文件未在utf-8中编码。您在PI指令中声明了编码,但这并不意味着您的编辑器确实保存了utf-8。
如何更改编码取决于您的编辑器/ ide。
Edit
- &gt; Set Encoding
File
- &gt; File Encoding