非英语URL的Facebook分享问题

4
我们有一个阿拉伯语网站,想在Facebook上分享一个链接。链接看起来像这样: http://www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/story/75。
问题在于Facebook无法获取上述链接中的缩略图。我们通过Fiddler进行了调试,发现Facebook尝试访问的URL与上述给出的不同,该URL看起来像这样:www.website.com/ar/%c3%98%c2%b4%c3%98%c2%a7%c3%99%e2%80%a1%c3%98%c2%af%c3%99%e2%80%b0-%c3%98%c2%b9%c3%98%c2%b1%c3%99%cb%86%c3%98%c2%b6-%c3%98%c2%a7%c3%99%e2%80%9e%c3%98%c2%a3%c3%98%c2%b2%c3%99%c5%a0%c3%98%c2%a7%c3%98%c2%a1-%c3%98%c2%a7%c3%99%e2%80%9e%c3%98%c2%b9%c3%98%c2%a7%c3%99%e2%80%9e%c3%99%e2%80%a6%c3%99%c5%a0%c3%98%c2%a9-%c3%98%c2%a8%c3%98%c2%b9%c3%99%c5%a0%c3%99%cb%86%c3%99%e2%80%a0-%c3%98%c2%b9%c3%98%c2%b1%c3%98%c2%a8%c3%99%c5%a0%c3%98%c2%a9/%c3%99%e2%80%a6%c3%99%cb%86%c3%98%c2%b6%c3%98%c2%a9/story/75。
我需要知道Facebook对URL进行了哪些处理,以使其变成上述形式。还有一件事,我知道这个URL没有进行UTF8编码。如果将给定的阿拉伯语URL转换为UTF8,则看起来像以下内容而不是上述内容。

我需要知道脸书正在使用哪种编码方式或者在分享链接时脸书是如何访问以下链接的:

www.website.com/ar/%D8%B4%D8%A7%D9%87%D8%AF%D9%89-%D8%B9%D8%B1%D9%88%D8%B6-%D8%A7%D9%84%D8%A3%D8%B2%D9%8A%D8%A7%D8%A1-%D8%A7%D9%84%D8%B9%D8%A7%D9%84%D9%85%D9%8A%D8%A9-%D8%A8%D8%B9%D9%8A%D9%88%D9%86-%D8%B9%D8%B1%D8%A8%D9%8A%D8%A9/%D9%85%D9%88%D8%B6%D8%A9/story/75

1个回答

4
http://www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/story/75

那不是一个URI (或URL)。它是一个IRI。不幸的是,很多软件不直接支持IRI(包括SO,你可以从它仅链接地址的第一部分看出来!)。

因此,如果你想让链接在任何地方都能正常工作,你需要将其编写为带有UTF-8-URL编码路径名的普通URI,就像最后一个示例中的那样(%D8%B4...)。浏览器通常会将编码后的链接呈现为漂亮的IRI,而不管HTML文档中的链接是否为普通URI。

"

%c3%98%c2%b4...是当你取UTF-8编码的字节并将其视为ISO-8859-1编码时得到的结果(然后再次进行UTF-8-URL编码,导致“双重UTF-8”出现问题)。您是如何将IRI输入Facebook的?要么您正在使用一个接口,该接口发送UTF-8但期望ISO-8859-1,要么这只是Facebook的一个老问题。无论哪种方式,现在您必须使用URI版本。

"

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接