Php 用西班牙语特殊字符解析xml文档
我有一个包含西班牙语数据的xml文档。文件编码为ISO-8859-1。Spnish中的特殊字符以数字形式出现,如363、355、341等。因此有些单词看起来像:te363ricas、caracter355sticas等等。当我试图解析数据时,我得到了无效字符错误 我解析数据的php脚本需要utf8数据。我已经尝试使用utf8_encode()、mb_convert_encode()和iconv()转换数据,但都没有成功 如果我在VIM中看到该文件,那么这些特殊字符会正确显示,但是当我在terminal中看到less命令的输出时,这些数字会显示出来,而不是字符 以下是从文件中提取的部分: 从VIM复制 不同国家的环境保护委员会和相关国家的环境保护委员会。 -确认más的重要方面是动物活动的规划。 -必须对动物的活动进行必要的控制 从较少的命令输出复制 不同国家的环境保护和相关特征。 -确定M341的重要方面是动物活动的平面图363n。 -必须对动物的活动进行必要的控制 以下是代码片段:Php 用西班牙语特殊字符解析xml文档,php,xml,character-encoding,Php,Xml,Character Encoding,我有一个包含西班牙语数据的xml文档。文件编码为ISO-8859-1。Spnish中的特殊字符以数字形式出现,如363、355、341等。因此有些单词看起来像:te363ricas、caracter355sticas等等。当我试图解析数据时,我得到了无效字符错误 我解析数据的php脚本需要utf8数据。我已经尝试使用utf8_encode()、mb_convert_encode()和iconv()转换数据,但都没有成功 如果我在VIM中看到该文件,那么这些特殊字符会正确显示,但是当我在termi
$fp = fopen('data.xml', 'r');
$parser = xml_parser_create();
xml_set_element_handler($parser, 'start_element', 'end_element');
xml-set_character_data_handler($parser, 'character_data');
while(!feof($fp)) {
$data = fgets($fp, 16384);
if(!xml_parse($parser, $data, feof($fp))) {
$error = 'xml file contains error on line '.xml_get_current_line_number($parser).
'with following problem '.xml_error_string(xml_get_error_code($parser));
die($error);
}
}
function start_element($parser, $name, $attrs) {
// something to do with the start element
}
function end_element($parser, $name, $attrs) {
// something to do with end element
}
function character_data($parser, $data) {
// something to do with the data
}
下面是示例xml:
<?xml version="1.0" encoding="ISO-8859-1"?>
<programas>
<programa id="1">
<objetivos><![CDATA[- Conocer las diferentes aproximaciones te363ricas al envejecimiento y sus caracter355sticas m341s relevantes.
- Identificar las aspectos m341s importantes sobre los que planificar la actividad de animaci363n.
- Desarrollar los conocimientos necesarios con los que debe contar el animador para desarrollar la actividad adecuadamente.]]></objetivos>
</programa>
</programas>
有什么想法吗?在XML的开头有编码规范吗(我的意思是,类似于
)?物理文件的编码是否正确?您可以发布您的文件片段吗?您好,是的,文档包含您在iso-8859-1中提到的编码规范,我在我的问题中也提到过(第二行)。很抱歉,这让人困惑。@potame:我不确定物理文件的编码是否正确,我会检查一下。另外一件可能有帮助的事情是——这些字符在VIM中正确显示,但如果我使用较少的命令在命令行中查看文件,则将这些字符显示为数字。请查看我的更新问题。请从您的XML中发布一个最低有效的示例,以及最低工作代码。您似乎使用了一个不正确的工具来复制和粘贴示例文本。字符串<代码> M34 1S < /代码>是五个字符,中间有三个ASCII数字字符。可能应该是m\341s
,其中转义序列\341
表示一个字节,可能是八进制值0341(十进制225,十六进制E1),这实际上是ISO-8859-1中的字符代码。