Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ??? 使用Prerender.io的AngularJS应用程序社交网络爬虫中元标记中的问号_Javascript_Angularjs_Phantomjs_Facebook Opengraph_Meta Tags - Fatal编程技术网

Javascript ??? 使用Prerender.io的AngularJS应用程序社交网络爬虫中元标记中的问号

Javascript ??? 使用Prerender.io的AngularJS应用程序社交网络爬虫中元标记中的问号,javascript,angularjs,phantomjs,facebook-opengraph,meta-tags,Javascript,Angularjs,Phantomjs,Facebook Opengraph,Meta Tags,我有一个网站,生成包含日语字符的元标记,作为开放图形协议的一部分。但是,在运行站点时 通过一个爬虫,即 元标记content属性的日文字符都显示为???????在“原始打开图形文档信息”下 其他网站,如 在元标记中似乎可以很好地显示日语字符。我试过了 lang=“ja”xml:lang=“ja” 在html中没有运气 任何帮助都将不胜感激 问题在于,该网站的回复中没有字符集,因此Facebook必须采用字符集,而且可能采用ANSI,它只将任何未知字符转换为问号。根据语言的不同,实现也有所

我有一个网站,生成包含日语字符的元标记,作为开放图形协议的一部分。但是,在运行站点时

通过一个爬虫,即

元标记
content
属性的日文字符都显示为???????在“原始打开图形文档信息”下

其他网站,如

在元标记中似乎可以很好地显示日语字符。我试过了

lang=“ja”xml:lang=“ja”

在html中没有运气


任何帮助都将不胜感激

问题在于,该网站的回复中没有字符集,因此Facebook必须采用字符集,而且可能采用ANSI,它只将任何未知字符转换为问号。根据语言的不同,实现也有所不同,但您可能可以通过谷歌搜索“HTTP头字符集语言”找到如何实现的说明。您的HTTP头应该如下所示:

Content-Type: text/html; charset=utf-8
在PHP中,这是一个简单的示例:

header('Content-Type: text/html; charset=utf-8');
然后Facebook会知道字符集是UTF-8,所以它不会再将日文字符转换成问号

我自己对此进行了测试以进行验证,当我制作了一个带有相同标题的文件时,Facebook确实正确地处理了日文字符


根据你的评论,我可以理解为什么Facebook认为这些角色是问号:因为他们是。当我在浏览器中打开该页时,它还会显示问号。这意味着问题出在你的服务器上,而不是Facebook对页面的处理

现在的问题很可能是,您的服务器确实回复内容类型为UTF-8,但服务器上的实际内容类型仍然是ASCII,因此它会更改服务器上的日语字符

要解决这个问题,您只需确保服务器上的所有文件都以UTF-8编码存储。将来,将默认字符编码设置为UTF-8可能会很有用(,并且;尝试用谷歌搜索自己的文本编辑器)。不过现在,您必须自己更改字符编码。你可以手动完成,也可以通过谷歌搜索自动完成


我发现它已经涵盖了自动字符编码转换。您也可以尝试,但如果您尝试更具体地使用谷歌搜索每种语言(“例如,将文件转换为UTF-8 Python”),您可以很容易地找到方法(,)。

我不知道到底发生了什么。但是我检查了您的页面响应标题,在
内容类型中,
标题缺少一个字符集。尝试将
内容类型
标题设置为
内容类型:text/html;charset=utf-8
我不确定这是不是真的。所以我留下了评论。投票给你!我原以为这就是问题所在,但Facebook看到的实际页面实际上是有
内容类型
标题的页面。我实际上是在使用Phantom JS缓存我的页面进行爬网,因为我的元数据都是通过Javascript生成的。@Luke这个添加有帮助吗?如果在文件上更改字符编码不起作用,请告诉我,这样我可以在转换后再次查看您的页面。