如何通过GET方法发送参数格式uft8?

时间:2012-10-19 12:51:48

标签: php

我将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)ăƒ•ă‚¡ă‚¤ăƒ«ă®å†…å®¹ă‚’ä¿®æ­£ă—ă¦ă€å†åº¦ă‚¢ăƒƒăƒ—ăƒ­ăƒ¼ăƒ‰ă‚’ă‚„ă‚ç›´ă—ă¦ăă ă•ă„。

你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

正确交换非ASCII数据的一种方法是使用base64_encode对其进行编码。由于Base64不完全是URL安全的,因此可以使用urlencodeurldecode,或者您可以编写一个生成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']);