首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PHP -分析UTF-8 XML

PHP -分析UTF-8 XML
EN

Stack Overflow用户
提问于 2012-12-12 23:30:01
回答 1查看 2.5K关注 0票数 1

我在使用YouTube解析XML (来自simple_xml )时遇到了问题,后者在文本节点中有下一个符号:

代码语言:javascript
复制
↓ ‘ ’

这些符号是在MacOS Safari浏览器中键入的,并保存为视频注释。

XML编码为UTF8,但如果我将文件保存到磁盘-引号符号将显示为奇怪的字符代码x92,x93 (notepad++,utf8)。

如果我在firefox中打开这个XML,然后保存它将从磁盘读取,php解析它的w/o问题。如果我直接从url或使用file_get_contents解析xml,那么解析崩溃。

也是向下箭头字符保存为文件作为↓ -那么如何转换回箭头?

我试过iconvmb_convert,但到目前为止没有任何帮助。

谢谢您的帮助,这里我附加了两个XML:第一个是问题xml (https://www.box.com/s/fgp5rih5s3dgx5y328gh),我在PHP中读取和保存;第二个我使用下载管理器程序(https://www.box.com/s/fgp5rih5s3dgx5y328gh)或通过在web浏览器(FireFox)中读取和保存。

此外,我还将处理使用中文、日文和阿拉伯文字的数据(来自其他视频):)

EN

回答 1

Stack Overflow用户

发布于 2012-12-13 08:01:48

如果您只是从php中使用youtube的xml,数据已经是utf-8,并且您不需要做任何复杂的事情,这将起作用:

代码语言:javascript
复制
<?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中,这些引号分别是0x910x92 (0x93实际上是),因此我怀疑您的文件在Windows1252中。

代码语言:javascript
复制
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"
);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13850487

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档