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这个添加有帮助吗?如果在文件上更改字符编码不起作用,请告诉我,这样我可以在转换后再次查看您的页面。