用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作为字符串(来源于这样的数据库)
你能请给我任何身份证件如何解决这个问题?
非常感谢
你有2种选择:
一)包括在你的PHP文件中的任何输出前header('Content-Type: text/html; charset=iso-8859-1');
。
B)的输出转换为UTF-8 $str = mb_convert_encoding($str, 'UTF-8', 'ISO-8859-1');
两个应该做的伎俩。
数据已经存在于UTF-8中,被误解为iso-8859-1或类似文件。如果你将ISO看作ISO-8859-1,那就是'C3B1',如果你在utf-8中解释'C3B1',你会得到'ñ'。 – Esailija
是的!是!我爱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();
我正确的理解PHP显示这些字符好吗?您的HTML输出设置为UTF? –
这意味着UTF-8数据被误解为iso-8859-1 ..您需要设置utf-8内容类型标题 – Esailija
在您的浏览器中,尝试更改“View-> Character Encoding”菜单下的字符编码。一旦你找到正确显示的那个,在代码中使用它。 –