2012-10-19 95 views
0

我PARAM編碼爲:如何通過GET方法發送參數格式uft8?

$Title="CSVのアップロードに失敗しました。CSV(.zip)ファイルの內容を修正して、再度アップロードをやり直してください。"  ; 
$Title1=urlencode($Title); 

$標題1的值是:

"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)); 

爲什麼網址:標題的值不編碼:

http://localhost:81/joomlandk/index.php/component/servicemanager/?view=i0702&msg=File%20is%20invalid.&Title=CSVă®ă‚¢ăƒƒăƒ—ăƒ­ăƒ¼ăƒ‰ă«å¤±æ•—ă—ă¾ă—ăŸă€‚CSV(.zip)ăƒ•ă‚¡ă‚¤ăƒ«ă®å†…å®¹ă‚’ä¿®æ­£ă—ă¦ă€å†åº¦ă‚¢ăƒƒăƒ—ăƒ­ăƒ¼ăƒ‰ă‚’ă‚„ă‚ç›´ă—ă¦ăă ă•ă„。 

你能幫助我嗎?

+1

你想要什麼?我完全不明白。 – aefxx

+0

你在看結果在哪裏? 'JRoute :: _'做什麼,它的輸出是什麼? – deceze

+0

是你的php腳本文件utf8編碼? –

回答

0

正確交換非ASCII數據的一種方法是用base64_encode對它進行編碼。由於Base64並非完全的URL安全,因此可以使用urlencodeurldecode,或者您可以編寫一個可生成URL安全的Base64的函數。

我把它從this answer通過joeshmo

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']); 
+0

爲什麼不使用URL編碼替代...? – deceze

+0

@deceze:我認爲這會有點矯枉過正。但你說得對,'urlencode' /'urldecode'也可以使用。 – nkr

相關問題