(No non funziona) semmai sei tu a non usarlo nel modo corretto.
$_REQUEST['titolo'] ($_REQUEST $_POST $_GET $_COOKIE usano urldecode internamente significa se invii ü come ISO-8859-1 %FC o UTF-8 %C3%BC la decodifica percentuale lo trasforma in ü) è solo una variabile è ignara della codifica. Non stai provando il mio codice ti sei limitato a riadattarlo (erroneamente).
Sniffa il pacchetto http con Wireshark per vedere come passa effettivamente i dati.
1) Il browser potrebbe erroneamente conservare la codifica originaria da dove copi il carattere.
2) Giustamente la pagina del form HTML dovrà avere un header
Codice PHP:
header('Content-Type: text/html; charset=utf-8');
questo distingue una pagina HTML con codifica utf-8 o comunque la codifica dovrà essere espressa in UTF-8 anche per un diverso mime type di HTML. Anche la pagina di destinazione dovrà essere espressa con header UTF-8.
In sintesi fai la pagina di nome form.php
Codice PHP:
// http://www.miodominio.tld/form.php?titolo=%C3%BC se con ü direttamente non è conforme. Leggimi per favore per i dati va utilizzato la codifica percentuale sia che è GET o POST con enctype application/x-www-form-urlencoded o in sua assenza è il default o comunque anche per POST enctype multipart/form-data con nome e valore testuale di una form eccetto il file che non usa la codifica percentuale
header('Content-Type: text/html; charset=utf-8');[
var_dump(urlencode($_REQUEST['titolo'])); // Risultato atteso per ü di UTF-8 è %C3%BC