Twitter共享-将urlencode参数%2C重定向到%252C

Twitter共享-将urlencode参数%2C重定向到%252C,twitter,urlencode,Twitter,Urlencode,我正在使用twitter自定义共享按钮“构建您自己的tweet按钮”(https://dev.twitter.com/docs/tweet-button). 文档中说我必须使用查询参数来传递参数 问题:当我传递URL编码字符串时,Twitter对文本参数编码错误。在tweet消息中,逗号(,)显示为%252C。其他字符也被错误编码 我使用PHP url编码(http://php.net/manual/en/function.urlencode.php)为调用准备字符串 $text = urlen

我正在使用twitter自定义共享按钮“构建您自己的tweet按钮”(https://dev.twitter.com/docs/tweet-button). 文档中说我必须使用查询参数来传递参数

问题:当我传递URL编码字符串时,Twitter对文本参数编码错误。在tweet消息中,逗号(,)显示为%252C。其他字符也被错误编码

我使用PHP url编码(http://php.net/manual/en/function.urlencode.php)为调用准备字符串

$text = urlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps");
然后我构建了twitter链接:

'http://www.twitter.com/share?url='.urlencode($projectUrl).'&via='.$via.'&text='.$text.'&related='.$user->getTwitterProfileName()
最后一个twitter url调用是:

http://www.twitter.com/share?url=http%3A%2F%2Flocalhost%2Fapp%2Fbig-top-ballet&via=appbackr&text=I+just+backed+Big+Top+Ballet%2C+an+amazing+new+mobile+app%2C+on+appbackr%2C+where+anyone+can+back+mobile+apps&related=philippberner
一旦页面在浏览器(Chrome和Firefox)中打开,twitter就会将URL重定向到:

https://twitter.com/intent/tweet?related=philippberner&text=I+just+backed+Big+Top+Ballet%252C+an+amazing+new+mobile+app%252C+on+appbackr%252C+where+anyone+can+back+mobile+apps&url=http%253A%252F%252Flocalhost%252Fapp%252Fbig-top-ballet&via=appbackr
这将在tweet框中显示以下消息:

我刚刚支持了Big Top Ballet%2C,这是appbackr%2C上一款令人惊叹的新移动应用程序%2C,任何人都可以通过@appbackr支持移动应用程序

它将顶级+芭蕾舞%2C+an+精彩转换为顶级+芭蕾舞%252C+an+精彩。当我在twitter URL中将%252C手动更改为%2C时,逗号会正确显示。

使用:

$text = rawurlencode("I just backed ". $project->getTitle().", an amazing new mobile app, on appbackr, where anyone can back mobile apps");
然后,使用以下URL:
'https://twitter.com/intent/tweet?url=“.urlencode($projectUrl)。”&via='.$via.&text='.$text.&related='.$user->getTwitterProfileName()

实际上,它与url编码没有多大关系

它实际上与urlencode、rawurlencode一起工作,甚至不使用url编码 在打开新选项卡时尝试以下URL

使用urlEncode

使用rawurlEncode

无需urlEncode:只需支持玻璃天花板,这是appbackr上一款令人惊叹的新移动应用程序,任何人都可以支持移动应用程序和相关应用程序=

实际上,诀窍在于使用twitter.com而不是www.twitter.com。不知道为什么会有差异,而且twitter的文档和谷歌的搜索结果中似乎都没有记录。虽然为了公平起见,他指向了twitter.com而不是www.twitter.com


与往常一样,始终对文本进行url编码无疑是最佳做法,即使它不使用url编码。

使用rawurlencode,我甚至可以获得url中的空白。我以前试过。据我所知,区别在于空间的编码。他们不是问题的根源。然后twitter消息看起来像:I%20just%20backed%20Big%20Top%20Ballet%2C%20an%20mazing%20new%20mobile%20appback%2C%20on%20appbackr%2C%20where%20any%20can%20back%20mobile%20apps via@appbackr这是twitter API的URL重写中的一个错误,它在将URL“”重定向到“”时再次编码获取数据。使用最后一个URL。您还必须使用rawurlencode而不是urlencode。