我无法使用simple_xml解析XML(来自YouTube),在文本节点中有下一个符号:
↓ ‘ ’
这些符号在MacOS Safari浏览器中输入,并保存为视频注释。
XML已编码为UTF8,但如果我将文件保存到磁盘 - 引号符号将显示奇怪的字符代码x92,x93(记事本++,utf8)。
如果我在firefox中打开这个XML然后保存它会从磁盘读取,php解析它没有问题。
如果我直接从url解析xml或使用file_get_contents
解析崩溃。
同时将↓
字符保存为文件↓
- 那么如何转换回箭头?
我尝试iconv
,mb_convert
但到目前为止没有任何帮助。
感谢您的帮助,这里我附上两个XML:首先是问题xml(https://www.box.com/s/fgp5rih5s3dgx5y328gh),我读取并保存在PHP中;第二个是我使用下载管理器程序(https://www.box.com/s/fgp5rih5s3dgx5y328gh)或通过阅读并保存在网络浏览器(FireFox)中。
此外,我将处理使用中国,日本和阿拉伯字符的数据(来自其他视频):)))
答案 0 :(得分:2)
如果您只是使用来自php的youtube的xml api,数据已经是utf-8而且您不需要做任何复杂的事情,这将有效:
<?php
header("Content-Type: text/html; charset=utf-8");
$url = "https://gdata.youtube.com/feeds/api/videos?q=%E2%82%ACuro";
$el = simplexml_load_file( $url );
print_r( $el );
如果你没有在内容类型标题中使用正确的字符集,唯一不适合你的原因就是。
在Windows-1252中,这些引用分别是0x91
和0x92
(0x93
实际上是“
),因此我怀疑您的文件位于Windows-1252中。 / p>
header("Content-Type: text/html; charset=utf-8");
$str = file_get_contents("myfile.txt");
echo html_entity_decode(
mb_convert_encoding( $str, "UTF-8", "Windows-1252"),
ENT_QUOTES,
"UTF-8"
);