我在尝试在 Twitter 上分享一个包含阿拉伯字符的 URL 时遇到了问题:
http://example.com/قرعة-تصفيات-أفريقيا-مصر-تواجه-نيجيريا/
当我点击“分享”按钮时,相同的URL会显示在推文框中。但是实际发推后,它只链接到http://example.com并且其余的URL丢失了。我尝试使用urlencode()函数,但生成的URL太长了,无法发推。请问我应该怎么解决这个问题?
我在尝试在 Twitter 上分享一个包含阿拉伯字符的 URL 时遇到了问题:
http://example.com/قرعة-تصفيات-أفريقيا-مصر-تواجه-نيجيريا/
当我点击“分享”按钮时,相同的URL会显示在推文框中。但是实际发推后,它只链接到http://example.com并且其余的URL丢失了。这是一个涉及到两个方面的问题:网络和呈现。
URLs只能使用ASCII字符传递。例如,当您发出请求时,
http://example.com/عربي
这将会产生一个错误,或者在你的客户端(例如Chrome)中,会被转换为:
http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
网络浏览器会尽力以最易读的方式呈现此内容。例如,当您请求以下 URL 时:
http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
http://example.com/عربي
Chrome 还负责复制和粘贴。因此,当您复制顶部栏中的 URL 且其中包含 Unicode 字符时,它将复制 http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A
而不是 http://example.com/عربي
。现在您需要做的是检查 Twitter 如何处理此问题。它可能已经进行了一些演示以提高用户体验。但是,在网络方面,您真的无能为力。
您可以在.htaccess文件中使用RewriteRule,或者使用URL缩短服务。
我使用 URL 缩短网站,例如 goo.gl;然而相比于发布原始 URL,这会更加耗费时间。