2011-09-21 13 views
5

Sembra che la gestione file in PHP non funzioni con determinati caratteri (es. €) codificati UTF-8 se il percorso è hardcoded e il file php salvato come UTF- 8.Gestione file PHP con caratteri speciali UTF-8

È possibile farlo funzionare con tutti (o con la maggior parte dei caratteri occidentali)? C'è una biblioteca che lo rende possibile forse? Perché non sono riuscito a trovarne.

Ad esempio una cartella denominata äöü&()éèàâêûô@$+ç%&=! £ _; {[]} ~ '¢ ¬§ ° # @ | ... € `in windows non funziona con is_dir().

EDIT: SOLUZIONE

Ok, ho trovato una soluzione. Non l'ho ancora testato completamente, non sono sicuro che sia ancora infallibile e non so se questa è la migliore pratica, ma codificare la stringa torna ad ANSI sembra fare il trucco (almeno per la stringa che ho postato).

$string = iconv(mb_detect_encoding($string, "auto"), 'Windows-1252', $string); 

Immagino che questo dovrebbe funzionare con l'impostazione predefinita della maggior parte dei computer Windows occidentale.

risposta

0

Mi rifiuto di lavorare anche con una cartella simile! :-)
Gli scherzi a parte, si potrebbe provare a salvare il file come UTF-16, in quanto questa dovrebbe essere la codifica che Windows utilizza internamente.

+1

Ciao. Grazie per la risposta. Mi hai dato un'idea. Cerco di ricodificarlo in ANSI con qualcosa come '$ string = iconv (mb_detect_encoding ($ string," auto "), 'Windows-1252', $ string);' e sembra che faccia il trucco. Non l'ho ancora testato completamente ma funziona per la stringa che ho postato (per ora). – huuerequer