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ñ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或只是没有修复该字符
帮助我非常感谢!
您遇到的问题不是输入字符串,而是输出字符串.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编码的字符串.