Attualmente sto cercando di rimuovere tutti i caratteri speciali e gli accenti da una stringa UTF-8 trasformandoli, se possibile, nel loro carattere ASCII equivalente.Perché iconv di PHP ha bisogno di setlocale?
Così sto semplicemente usando questo codice:
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
Il problema è che, per esempio la parola "debutto" si trasforma in "dbut" invece di "debutto". Per farlo funzionare, ho bisogno di aggiungere una chiamata a setlocale, in questo modo:
setlocale(LC_ALL, 'en_US.UTF8');
$result = iconv('UTF-8', 'ASCII//TRANSLIT//IGNORE', $input);
E io non capisco perché. Pensavo che l'UTF-8 e l'ASCII fossero sempre gli stessi, qualunque sia la localizzazione che usi.
EDIT: Non intendevo UTF-8 è uguale a ASCII, volevo dire UTF-8 è uguale a sempre UTF-8 e ASCII è sempre uguale ASCII
ASCII e UTF-8 non sono uguali. UTF-8 è più grande di ordini di grandezza. – NikiC