Originariamente inviato da Apollino
mmmmh ho letto un po' l'articolo che hai postato, però è un argomento abb complicato e non riesco a capirlo a fondo in inglese. C'è qualcosa in italiano?

Però c'è scritto che funzioni come strtolower ed explode possono avere problemi.
Io li utilizzavo entrambe nel mio script!
Si, "possono" perchè dipende da che caratteri ci sono nella stringa. Nell'utf8 alcuni caratteri speciali usano 2 byte per descrivere il carattere, e le funzioni problematiche invece danno per scontato che 1 carattere = 1 byte, cosi l'explode o il substr potrebbero spezzare la stringa a metà di un carattere.

- La pagina che mi arriva è originariamente è ISO. Ma se io l'ho chiesta in UTF-8 nel mio curl non dovrebbe mandarmela codifica in UTF-8?
Tu con quell'header dici quali charset accetta il client, teoricametne il server se non è in grado di restituirti i caratteri in utf8 dovrebbe darti un errore.
Comunque il fatto che tu chieda in utf8 non vuol dire che ti arrivino correttamente, magari il server codifica in utf8 ma poi ti arrivano i caratteri scombinati.

- PHP che cosa usa come default quando esegue gli script?
Credo dipenda dal default charset impostato in apache, comunque io per sicurezza nei miei file php metto sempre il comando header per specificare manualmente :

codice:
header('Content-type: text/html;charset=utf-8');
- Esiste una funzione che mi dice esattamente che charset usa una stringa?
che io sappia no, esistono per la rete delle funzioni che ci provano alla ricerca di un carattere multybite all'interno della stringa, ma il punto è che la stringa "pippo" che non ha caratteri speciali è descritta allo stesso modo nello standard iso e nello standard utf8 quindi non puoi mai avere la sicurezza di quale sia la codifica.

Per esperienza quando hai a che fare con testo creato da altri, l'unica cosa è fare un po' di tentativi con utf8encode/decode.

Un'altra prova può essere fare un echo della pagina, e poi tramite il menu "visualizza" -> "codifica caratteri" provare a selezionare alternativamente iso e utf8 in modo da avere un colpo d'occhio visivo dei caratteri e individuare eventuali caratteri "strani".

ciao