我想让用户可以在demo中发布他们喜欢的歌曲,但是当url包含一个土耳其字符Twitter将url从像图像上的第一个土耳其字符之后分割开。

推特上的Url必须类似于myurl.com/?view=s&artist=demet%20akıalın&track=ışık%20hğzmesi,但它是在demet ak之后剪切的。
我使用的代码如下:
<?php
define('APP_BASE_URL', 'http://www.myurl.com');
header('Content-type: text/html; charset=UTF-8');
$a['artistname'] = 'demet akıalın';
$a['trackname'] = 'ışık hğzmesi';
?>
<a target="_blank" title="Share on Twitter" href="https://twitter.com/share?hashtags=CruisEar&text=<?php echo $a['artistname']." - ".$a['trackname']; ?>&url=<?php echo urlencode(str_replace(" ","%20",APP_BASE_URL."?view=s&artist=".$a['artistname']."&track=".$a['trackname']));?>" data-url="https://dev.twitter.com" data-via="your_screen_name" data-lang="en"><img src="http://www.olmasigereken.com/demo2/img/twit.gif" alt="share on twitter" /></a>发布于 2012-12-24 15:41:38
推特做得很对。根据HTTP/1.1规范,URL不能包含非ASCII值,某些ASCII值需要进行百分比编码。
ı字符是非ASCII的,所以它必须是百分比编码的,就像您的空间必须变成%20一样。
echo rawurlencode(utf8_encode(APP_BASE_URL.'?view=s&artist='.$a[artistname].'&track='.$a[trackname]));https://stackoverflow.com/questions/14023161
复制相似问题