我在使用YouTube解析XML (来自simple_xml )时遇到了问题,后者在文本节点中有下一个符号:
↓ ‘ ’这些符号是在MacOS Safari浏览器中键入的,并保存为视频注释。
XML编码为UTF8,但如果我将文件保存到磁盘-引号符号将显示为奇怪的字符代码x92,x93 (notepad++,utf8)。
如果我在firefox中打开这个XML,然后保存它将从磁盘读取,php解析它的w/o问题。如果我直接从url或使用file_get_contents解析xml,那么解析崩溃。
也是向下箭头↓字符保存为文件作为↓ -那么如何转换回箭头?
我试过iconv,mb_convert,但到目前为止没有任何帮助。
谢谢您的帮助,这里我附加了两个XML:第一个是问题xml (https://www.box.com/s/fgp5rih5s3dgx5y328gh),我在PHP中读取和保存;第二个我使用下载管理器程序(https://www.box.com/s/fgp5rih5s3dgx5y328gh)或通过在web浏览器(FireFox)中读取和保存。
此外,我还将处理使用中文、日文和阿拉伯文字的数据(来自其他视频):)
发布于 2012-12-13 08:01:48
如果您只是从php中使用youtube的xml,数据已经是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 );如果您没有在内容类型的标题中使用适当的字符集,那么唯一不适合您的原因就是。
在Windows1252中,这些引号分别是0x91和0x92 (0x93实际上是“),因此我怀疑您的文件在Windows1252中。
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"
);https://stackoverflow.com/questions/13850487
复制相似问题