XML和PHP file_get_contents的字符编码问题

时间:2013-02-19 19:06:47

标签: character-encoding xml-parsing

我一直遇到来自XML API的字符编码问题,似乎无法解决问题。我想知道是否有人会知道如何解决这个问题。我尝试了以下几段代码,它们都产生了一些奇怪的字符编码问题。

代码#1

$xml_url = "http://myurl.com/123.xml";
$xml = simplexml_load_file($xml_url);

代码#2

$xml_url = "http://myurl.com/123.xml";
$contents = file_get_contents($xml_url);
$xml = new SimpleXMLElement($contents);

像撇号这样的某些角色出现的方式就像这样

strengthening resumés

这有几百个错误。我的代码顶部看起来像这样

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Untitled Document</title>
</head>

我已经尝试删除它,并将其作为HTML 5,我似乎无法得到任何东西。我尝试了其他拉丁字符编码等,它变得越来越糟。有没有人对如何解决这个问题有任何想法?

1 个答案:

答案 0 :(得分:0)

当UTF-8编码文本é被视为ISO-8859-1编码文本时,它显示为é

如果我没记错的话,SimpleXML只适用于UTF-8编码数据。因此,如果您的数据不是UTF-8,则需要对您读入的所有文件以及添加到文档中的文本字符串进行编码(在对其使用SimpleXML方法之前)。您可以使用iconv()utf8_encode()进行转换。

如果您的代码具有非ASCII文字,请检查代码文件的编码。