TencentQQ - 混合普通话和英文网址时分割的URL(decodeURIComponent)

时间:2014-04-29 18:33:43

标签: javascript web encoding utf-8 social

我们正在使用他们的静态共享URL与TencentQQ实现共享功能。我们有一个经过编码的网址:" http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4/id-000000"

使用此链接通过TencentQQ共享此链接时: http://share.v.t.qq.com/index.php?c=share&a=index&url=http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4/id-000000&title=This%20is%20a%20test&appkey=000000000

您将在Feed上看到在普通话字符开头拆分URL。 URL Being Split

我想在处理URL时他们正在使用decodeURIComponent,我注意到在Chrome的开发工具控制台中执行时效果相同:

Chrome Dev Tools

我想这里的问题是 - 我在编码这个网址时做错了吗?是否有理由在普通话字符的开头拆分URL?

1 个答案:

答案 0 :(得分:3)

您的网址未经过编码,看起来它是编码的,因为它使用非ASCII /非拉丁字符,任何其他网址作为参数的网址都需要编码,长话短说,这里是解决方案:

function urlShare(url,title,appkey){
    return 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+encodeURIComponent(url)+'&title='+encodeURIComponent(title)+'&appkey='+appkey
}

只需使用URL,标题和appkey调用此函数(不知道appkey是否需要编码):

urlShare('http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4','A Title','id-000000')

它将返回一个实际有效的安全网址。