Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用PHP解析xml如何处理这样的字符_Php_Xml_Encoding_Xml Parsing - Fatal编程技术网

用PHP解析xml如何处理这样的字符

用PHP解析xml如何处理这样的字符,php,xml,encoding,xml-parsing,Php,Xml,Encoding,Xml Parsing,我正在使用php解析一个xml文档 当我在浏览器中看到结果时,我得到以下字符: ñ而不是西班牙语 í而不是 Ó而非” ó而非ó é而非 我本来打算用stru替换,并用每个奇怪的字符替换好的字符,但遗憾的是,以前的模式只是偶尔出现,一般来说,我收集了很多奇怪的字符:( xml标题是: <?xml version="1.0" encoding="iso-8859-1"?> 但是如果我把它改成utf-8,它就不会被打印了 我用simplexml\u load\u字符串(来

我正在使用php解析一个xml文档

当我在浏览器中看到结果时,我得到以下字符:

ñ而不是西班牙语

í而不是

Ó而非”

ó而非ó

é而非

我本来打算用stru替换,并用每个奇怪的字符替换好的字符,但遗憾的是,以前的模式只是偶尔出现,一般来说,我收集了很多奇怪的字符:(

xml标题是:

<?xml version="1.0" encoding="iso-8859-1"?>

但是如果我把它改成utf-8,它就不会被打印了

我用simplexml\u load\u字符串(来自这样的数据库)将xml作为字符串加载

你能告诉我怎么解决这个问题吗


非常感谢SimpleXML使用UTF-8对存储的字符串进行编码。您可以使用iso-8859-1的XML文件,但是如果您想用这种编码打印XML值,您必须在之前使用utf8解码。

$string=preg\u replace('/[\x00-\x1F\x80-\xFF]/','$string);

您有两个选项:

a) 包括
标题('Content-Type:text/html;charset=iso-8859-1')
b) 使用
$str=mb_convert_编码($str,'utf-8','ISO-8859-1')将输出转换为utf-8


两者都应该起作用。

我对PHP显示这些字符的理解正确吗?HTML输出是否设置为UTF?这意味着UTF-8数据被误解为iso-8859-1。。您需要在浏览器中设置utf-8内容类型标题,请尝试在“查看->字符编码”菜单下更改字符编码。一旦找到正确显示的数据,请在代码中使用。数据已经在utf-8中,被误解为iso-8859-1或类似文件。如果你把
看作ISO-8859-1,那就是
C3B1
,如果你用utf-8解释
C3B1
,你会得到
ñ
。是的!对我喜欢mb_转换_编码;)
// new xml
$xml = new SimpleXMLElement('new.xml'); 

// Displaying XML in textual form
echo $xml->asXML();