为啥 Facebook 帖子中的特殊字符显示为问号?
Posted
技术标签:
【中文标题】为啥 Facebook 帖子中的特殊字符显示为问号?【英文标题】:Why are special characters displayed as question marks in Facebook posts?为什么 Facebook 帖子中的特殊字符显示为问号? 【发布时间】:2020-05-04 11:16:30 【问题描述】:当我们共享指向我们的 magnolia 网站(在 Tomcat 上运行)的链接时,变音符号显示为问号。
页头有<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
,响应头有内容类型text/html;charset=UTF-8
和内容编码gzip
。什么可能导致 Facebook 上的字符编码错误?
【问题讨论】:
可能他们不是实际上没有正确编码为UTF-8?仅仅因为您说他们是通过Content-Type
,并不会自动使如此。
@CBroe,如何检查实际编码?我导出了页面的JCR-Node,第一行指定了编码:<?xml version="1.0" encoding="UTF-8"?>
您有显示问题的实际示例 URL 吗?
Facebook 共享调试器生成以下内容:curl -v --compressed -H "Range: bytes=0-524288" -H "Connection: close" -A "facebookexternalhit/1.1 (+http://www.facebook.com/externalhit_uatext.php)" "https://www.mieterverband.ch/mv/politik-positionen/news/2019/Jetzt-w%C3%A4hlen-f%C3%BCr-mieterfreundliche-Mehrheiten-in-Bern.html"
,这会产生没有内容的响应。如果我遗漏了Range
字段,我会收到消息正文。所以过去Facebook可以爬取网站的时候,可能是编码错误,但现在问题似乎是Facebook无法爬取页面。
它究竟在哪里生成这个 cURL 代码?不确定它会从哪里获得该字节范围。该 URL 返回一个包含标题 Content-Length: 12298
的响应,所以我看不出从哪里可以得到请求 bytes=0-524288
开头的想法。
【参考方案1】:
最后我发现,我的问题与字符编码无关,而与 Facebook 爬虫请求有关。 Facebook Sharing Debugger 真的让我走上了正轨。核心问题是,magnolia 缓存不支持部分请求。
编辑: 来自 Facebook 的 HTTP 范围请求是一个已知问题,请参阅 https://documentation.magnolia-cms.com/display/DOCS62/_Known+issues#id-_Knownissues-HTTPrangerequestsfromFacebookdon%27twork
【讨论】:
以上是关于为啥 Facebook 帖子中的特殊字符显示为问号?的主要内容,如果未能解决你的问题,请参考以下文章