LinkedIn在使用共享API时并不编码特殊字符。特别是报价问题。 Facebook Sharer似乎运行良好,但LinkedIn使用&符编码时会窒息。下面的内容为"我们有一架无人机,我们已经准备好拍摄"而不是预期的"我们有一架无人机,我们准备拍摄#34;。
<meta property="og:title" content="We have a drone, and we’re prepared to shoot" />
有问题的网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shoot/
答案 0 :(得分:0)
’
是HTML字符引用。这是在<meta property>
标记内使用的正确内容,因为它是HTML本身的一部分。
对于&#34;分享这篇文章&#34;页面按钮上的按钮,Twitter和Linkedin共享URL未正确编码。它们都具有以下编码的页面标题:
We%20have%20a%20drone%2C%20and%20we%26%238217%3Bre%20prepared%20to%20shoot
哪个错误,需要将其编码为:
We%20have%20a%20drone%2C%20and%20we%E2%80%99re%20prepared%20to%20shoot
%26%238217%3B
是文字字符串’
的网址编码形式,它按原样显示,因为HTML字符引用在网址中没有任何意义。
%E2%80%99
是Unicode ’
字符的原始UTF-8编码八位字节的url编码形式。
因此,为Twitter和LinkedIn生成共享URL的任何人都不会将HTML字符引用’
解码为其实际的Unicode代码点U+2019
,然后将其编码为UTF-8八位字节{{1}在共享网址中。或者更有可能的是,只是在HTML和URL中输出相同的E2 80 99
文本而不考虑它们以语义上不同的方式编码Unicode字符。
电子邮件和Facebook共享网址不会遇到此问题,因为他们没有在任何地方指定网页标题。特别是Facebook正在传递页面URL,然后它检索页面的HTML元数据,其中’
具有意义并被正确解码为’
。