我将param编码为:
$Title="CSVのアップロードに失敗しました。CSV(.zip)ファイルの内容を修正して、再度アップロードをやり直してください。" ;
$Title1=urlencode($Title);
$ Title1的值是:
"CSV%E3%81%AE%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%81%AB%E5%A4%B1%E6%95%97%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82CSV%28.zip%29%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AE%E5%86%85%E5%AE%B9%E3%82%92%E4%BF%AE%E6%AD%A3%E3%81%97%E3%81%A6%E3%80%81%E5%86%8D%E5%BA%A6%E3%82%A2%E3%83%83%E3%83%97%E3%83%AD%E3%83%BC%E3%83%89%E3%82%92%E3%82%84%E3%82%8A%E7%9B%B4%E3%81%97%E3%81%A6%E3%81%8F%E3%81%A0%E3%81%95%E3%81%84%E3%80%82"
我发送param为:
header("Location:".JRoute::_('index.php?option=com_servicemanager&view=i0702'.'&msg='.$msg1."&Title=".$Title1));
为什么在url:Title的值不编码:
http://localhost:81/joomlandk/index.php/component/servicemanager/?view=i0702&msg=File%20is%20invalid.&Title=CSVă®ă‚¢ăƒƒăƒ—ăƒăƒ¼ăƒ‰ă«å¤±æ•—ă—ă¾ă—ăŸă€‚CSV(.zip)ăƒ•ă‚¡ă‚¤ăƒ«ă®å†…å®¹ă‚’ä¿®æ£ă—ă¦ă€å†åº¦ă‚¢ăƒƒăƒ—ăƒăƒ¼ăƒ‰ă‚’ă‚„ă‚ç›´ă—ă¦ăă ă•ă„。
你能帮助我吗?
答案 0 :(得分:0)
正确交换非ASCII数据的一种方法是使用base64_encode
对其进行编码。由于Base64不完全是URL安全的,因此可以使用urlencode
和urldecode
,或者您可以编写一个生成URL安全Base64的函数。
我是通过this answer joeshmo从{{3}}获取的。
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_,');
}
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_,', '+/='));
}
使用此辅助函数,您可以对文本进行编码:
$Title = "CSVのアップロードに失敗しました。CSV(.zip)ファイルの内容を修正して、再度アップロードをやり直してください。" ;
$encoded_title = base64_url_encode($Title);
要在另一侧解码,只需执行以下操作:
$Title = base64_url_decode($_GET['Title']);