2011-09-21 19 views
5

Parece que el tratamiento de archivos en PHP no funciona con ciertos caracteres (por ejemplo, €) codificados UTF-8 si la ruta está codificada y el archivo php se guardó como UTF- 8.Tratamiento de archivos PHP con caracteres especiales UTF-8

¿Es posible hacerlo funcionar con todos (o la mayoría de los caracteres occidentales)? ¿Hay alguna biblioteca que lo haga posible? Porque no pude encontrar ninguno.

Por ejemplo, una carpeta llamada äöü&()éèàâêûô@$+ç%&=! £ _; {[]} ~ '¢ ¬§ ° @ @ ... € `en windows no funcionará con is_dir().

EDIT: SOLUCIÓN

Ok, he encontrado una solución. Todavía no lo he probado completamente, no estoy seguro de si es infalible aún y no sé si esta es la mejor práctica, pero codificar la cadena de vuelta a ANSI parece ser el truco (al menos para la cadena que publiqué))

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

Creo que esto debería funcionar con la configuración predeterminada de la mayoría de las computadoras con Windows occidental.

Respuesta

0

¡Me rehusaría a trabajar con una carpeta así también! :-)
Bromas aparte, puede tratar de guardar el archivo como UTF-16, ya que se supone que esta es la codificación que Windows usa internamente.

+1

Hola. Gracias por su respuesta. Me diste una idea. Intento volver a codificarlo en ANSI con algo como esto '$ string = iconv (mb_detect_encoding ($ string," auto "), 'Windows-1252', $ string);' y parece ser el truco. Todavía no lo he probado completamente pero funciona para la cadena que publiqué (por ahora). – huuerequer

Cuestiones relacionadas