Php 用西班牙语特殊字符解析xml文档

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

我有一个包含西班牙语数据的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。 -必须对动物的活动进行必要的控制

以下是代码片段:

$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中的字符代码。