PHP 的 urlencode()
函數本身不支持多語言。它主要用于將 URL 中的特殊字符轉換為百分號編碼,以便在 URL 中安全地傳輸數據。然而,如果你需要處理多語言 URL,可以使用以下方法:
iconv
或 mb_convert_encoding
函數將多字節字符(如中文、日文等)轉換為 ASCII 字符。這樣,你可以使用 urlencode()
函數對轉換后的字符串進行編碼。在解碼時,需要使用相應的函數將 ASCII 字符轉換回原始的多字節字符。示例:
function encode_url_multilang($url) {
$converted_url = iconv('UTF-8', 'ASCII//IGNORE//TRANSLIT', $url);
return urlencode($converted_url);
}
function decode_url_multilang($url) {
$converted_url = urldecode($url);
return iconv('ASCII//IGNORE//TRANSLIT', 'UTF-8', $converted_url);
}
$url = "你好,世界!";
$encoded_url = encode_url_multilang($url);
echo $encoded_url; // 輸出:%E4%BD%A0%E5%A5%BD%EF%BC%8C%E4%B8%96%E7%95%8C%EF%BC%81
$decoded_url = decode_url_multilang($encoded_url);
echo $decoded_url; // 輸出:你好,世界!
urlencode()
函數的替代方案,如 rawurlencode()
,它對特殊字符的處理略有不同,但通??梢杂糜诙嗾Z言 URL。然而,rawurlencode()
在某些情況下可能無法正確處理所有字符,因此建議使用 iconv
或 mb_convert_encoding
函數進行處理。請注意,將多字節字符轉換為 ASCII 字符可能會導致部分信息丟失。因此,在處理多語言 URL 時,請確保在編碼和解碼過程中使用適當的函數,以保留原始數據。