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

问题描述:

我正在使用php解析xml文档。用PHP解析xml如何处理这些字符

当我看到的结果是在浏览器中,我得到了以下特点:

A±,而不是西班牙的n

A的相反,我

á代替

A 3而不是ó

é而不是é

我打算使用str_replace替换每个奇数字符,但不幸的是之前的模式只是偶尔发生,并且通常我有大量奇数字符集:(

xml标题是:

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

但是,如果我将其更改为UTF-8也根本不会被打印出来..

我simplexml_load_string加载XML作为字符串(来源于这样的数据库)

你能请给我任何身份证件如何解决这个问题?

非常感谢

+0

我正确的理解PHP显示这些字符好吗?您的HTML输出设置为UTF? –

+0

这意味着UTF-8数据被误解为iso-8859-1 ..您需要设置utf-8内容类型标题 – Esailija

+0

在您的浏览器中,尝试更改“View-> Character Encoding”菜单下的字符编码。一旦你找到正确显示的那个,在代码中使用它。 –

你有2种选择:

一)包括在你的PHP文件中的任何输出前header('Content-Type: text/html; charset=iso-8859-1');

B)的输出转换为UTF-8 $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1');

两个应该做的伎俩。

+0

数据已经存在于UTF-8中,被误解为iso-8859-1或类似文件。如果你将ISO看作ISO-8859-1,那就是'C3B1',如果你在utf-8中解释'C3B1',你会得到'ñ'。 – Esailija

+0

是的!是!我爱mb_convert_encoding;) –

SimpleXML使用UTF-8编码来存储的字符串。您可以使用带有iso-8859-1的XML文件,但如果要使用此编码打印XML值,则必须先使用utf8_decode

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

// new xml 
$xml = new SimpleXMLElement('new.xml'); 

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