我们有一个阿拉伯网站,我们正试图在脸书上分享一个网址。网址看起来像
http://www.website.com/ar /شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/故事/ 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 /故事/ 75
我需要知道facebook对网址的影响如图所示。 我知道的另一件事是这个url不是UTF8编码的。如果给定的阿拉伯语网址转换为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 /故事/ 75
所以当我们分享网址时,我需要知道脸书正在使用哪种编码或Facebook正在做什么来访问以下网址
www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/故事/ 75
答案 0 :(得分:4)
http://www.website.com/ar/شاهدى-عروض-الأزياء-العالمية-بعيون-عربية/موضة/story/75
那不是URI(或网址)。这是一个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上的一个普通的老bug。不管怎样,你现在必须使用URI版本。