在Twitter分享时URL中出现阿拉伯字符

13

我在尝试在 Twitter 上分享一个包含阿拉伯字符的 URL 时遇到了问题:

http://example.com/قرعة-تصفيات-أفريقيا-مصر-تواجه-نيجيريا/
当我点击“分享”按钮时,相同的URL会显示在推文框中。但是实际发推后,它只链接到http://example.com并且其余的URL丢失了。
我尝试使用urlencode()函数,但生成的URL太长了,无法发推。请问我应该怎么解决这个问题?

5
你可以使用http://bit.ly、http://goo.gl、http://tinyurl.com或其他URL缩短服务吗?它们中的大多数都拥有API,因此您可以编程方式创建短URL。此外,这似乎与编程无关。你提到了php,但是除了对urlencode()的引用之外,你没有提供任何代码或描述您的Web应用程序。 - Eric Hughes
请检查一下语言设置...我不确定,但是请再确认一下。 - phpfresher
1
从技术上讲,URL 不能包含非 ASCII 字符,你应该对路径进行 URL 编码。如果 Twitter 只能使用当前编码的 URL,我不会感到惊讶。浏览器通常是宽松的,有时也会接受不正确的 URL。 - deceze
您是要分享此网站的所有者吗?如果是,您应该将URL重写为更短的形式,或者使用文章ID代替完整标题。如果不是,则应通过URL缩短器进行缩短。我认为Twitter有自己的专用缩短器,因为我刚试过分享它并且可以正常工作。 - Assem
你想尝试选择并复制/粘贴URL到推特吗?阿拉伯语是从右向左读取的,因此如果您不小心从左到右选择整个URL,将会漏掉一部分URL。请在阿拉伯维基百科这里中在地址栏中尝试一下。 - ASCIIThenANSI
4个回答

1
如果您是网站的所有者,您可以编写htaccess RewriteRule来生成更短或英语化的URL,或使用重定向文件。
RewriteEngine on 
RewriteRule ^redirect/(.*)/?$ ./redirector.php?key=$1 [QSA,L,NC]

如果您是网站用户,您可以使用URL缩短网站,如bit.lygoo.gl


我使用 goo.gl 来缩短 URL。 - Haroon Akram

0

这是一个涉及到两个方面的问题:网络呈现

网络

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

Chrome 将向用户呈现如下内容:
http://example.com/عربي

Chrome 还负责复制和粘贴。因此,当您复制顶部栏中的 URL 且其中包含 Unicode 字符时,它将复制 http://example.com/%D8%B9%D8%B1%D8%A8%D9%8A 而不是 http://example.com/عربي。现在您需要做的是检查 Twitter 如何处理此问题。它可能已经进行了一些演示以提高用户体验。但是,在网络方面,您真的无能为力。


0

您可以在.htaccess文件中使用RewriteRule,或者使用URL缩短服务。


-1

我使用 URL 缩短网站,例如 goo.gl;然而相比于发布原始 URL,这会更加耗费时间。


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