2010-02-11 60 views
2

好吧,我放弃了。 我一直在搞乱所有我能想到的从具有传统中文编码信息(charset = GB2312)的目标网站检索数据。用汉字获取源代码PHP

我一直都在使用simple_html_parser,但它似乎并没有返回中文字符,实际上我所得到的都是一些奇怪的问号嵌入菱形形状。 (“ ѯ ؼ ֣ ”像这样)

声明的PHP文件的编码没有做任何事情,除了摆脱一些不需要的字符显示在开始这一页。

通过声明为我的意思是:

header('Content-Type', 'text/html; charset=GB2312'); 

我不能让形式,它在中国的任何数据,也试过file_get_contents用相同的运气。我可能错过了一些明显的事情,因为我在别处找不到任何相关的讨论。

在此先感谢。

回答

4

您是否尝试过使用mb_convert_encodingiconv(例如,

$str = mb_convert_encoding($content, 'UTF-8', 'GB2312'); 

$str = iconv("UTF-8", "GB2312//IGNORE", $content); 
+1

这就是为什么我喜欢堆栈溢出,我会一直最终放弃努力,并忘掉它,但这个网站,真是不可思议。 你的第一个例子很好,没有尝试第二个例子,你能指出它的区别吗? 谢谢 – johnnyArt 2010-02-11 23:40:38

+0

@johnnyArt很好,他们基本上都是这样做的,但'iconv'函数更具可配置性,并支持比'mb_ *'(afaik)更多的编码。至于这两个软件包之间的差异,我真的没什么可提供的:'iconv'需要首先启用,我认为读取速度稍慢,而'mb_ *'是默认捆绑的。我会说这就像GD和ImageMagick。他们只是两个可用的软件包。但实际上,你可能想问一个新问题的区别。 – Gordon 2010-02-12 08:15:11

1

获取源代码使用的任何字符集,然后将其转换为本地可用的内容,例如UTF-8。 然后发送给浏览器。

-1

设置header('Content-Type: text/html; charset=utf-8');

它的工作对我来说