特殊字符编码

时间:2015-04-01 20:26:31

标签: utf-8 linkedin

LinkedIn在使用共享API时并不编码特殊字符。特别是报价问题。 Facebook Sharer似乎运行良好,但LinkedIn使用&符编码时会窒息。下面的内容为"我们有一架无人机,我们已经准备好拍摄"而不是预期的"我们有一架无人机,我们准备拍摄#34;。

<meta property="og:title" content="We have a drone, and we&#8217;re prepared to shoot" />

有问题的网站:http://nubix.ca/blog/we-have-a-drone-and-were-prepared-to-shoot/

1 个答案:

答案 0 :(得分:0)

&#8217;是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是文字字符串&#8217;的网址编码形式,它按原样显示,因为HTML字符引用在网址中没有任何意义。

%E2%80%99是Unicode 字符的原始UTF-8编码八位字节的url编码形式。

因此,为Twitter和LinkedIn生成共享URL的任何人都不会将HTML字符引用&#8217;解码为其实际的Unicode代码点U+2019,然后将其编码为UTF-8八位字节{{1}在共享网址中。或者更有可能的是,只是在HTML和URL中输出相同的E2 80 99文本而不考虑它们以语义上不同的方式编码Unicode字符。

电子邮件和Facebook共享网址不会遇到此问题,因为他们没有在任何地方指定网页标题。特别是Facebook正在传递页面URL,然后它检索页面的HTML元数据,其中&#8217;具有意义并被正确解码为&#8217;