simplexml编码问题

Tad*_*jna 1 php xml encoding simplexml

我不确定这是一个编码问题还是什么,但我有一个问题,使用简单的xml与文本中的一些字符

$xml = <<<HOHOHO
<?xml version="1.0" encoding="iso-8859-2" standalone="yes"?>
<videos>
    <video>
    <ContentProvider>bl abla</ContentProvider>
    <ArtistName>T-Boz</ArtistName>
    <CopyrightLine>(C)2009 SME Espa&#xF1;a, S.</CopyrightLine>
    </video>
</videos>
HOHOHO;

$a = simplexml_load_string ($xml);

foreach ( $a->video as $new ) 
    die($new->CopyrightLine);
Run Code Online (Sandbox Code Playgroud)

事情就是ñ角色变得混乱,变成类似Ă的东西,当它应该是一个ñ.我觉得奇怪的是,simplexml无论如何都要将它更改为一个角色,而不仅仅是保持原样......

我知道这必须用十六进制代码做一些事情,但我还没有找到解决方案

到目前为止我尝试过的事情:使用mb_convert_string将字符串转换为iso-8859-2,使用mb_convert_string将字符串转换为utf-8,使用html_entity_decode进行转换,使用html_special字符进行转换

以上所有尝试都无法解析xml或只是没有修复该字符

帮助我非常感谢!

hak*_*kre 5

您遇到的问题不是输入字符串,而是输出字符串.SimpleXML在内部使用UTF-8,如果您从SimpleXMLElement请求字符串,您将获得编码为UTF-8的字符串.

$output = (string) $new->CopyrightLine; # will always be UTF-8 encoded
Run Code Online (Sandbox Code Playgroud)

所以你需要使用输出重新编码,而不是输入.

与此代码示例和输出进行比较,输入是输入时显示为UTF-8.

没有办法绕过这个顺便说一句,因为SimpleXML总是会给你UTF-8编码的字符串.