Estoy usando la clase php ZipArchive para generar un archivo zip. Utilizo el segundo parámetro del método addFile para establecer el nombre del archivo en el archivo (ya que el archivo real en el disco tiene un nombre diferente). Algunos de los nombres deben contener acentos franceses (como & eacute;). Cuando descargo el archivo, los acentos no se muestran correctamente en el nombre del archivo. ¿Qué codificación debo usar para los nombres de los archivos? (la aplicación usa UTF-8)¿Qué codificación usa ZipArchive para almacenar nombres de archivos dentro del archivo creado?
Respuesta
Los archivos zip no tienen una codificación especificada; la herramienta de archivo debe adivinar (o asumir) la codificación utilizada. Primero prueba CP1252, luego ve desde allí.
No funciona. He intentado con ISO-8859-1, CP1252 y CP850 sin éxito – matei
¿Cómo se ve la secuencia de bytes de un nombre de archivo y qué se supone que es en el texto? –
Usa la codificación de DOS. Mis nombres de archivo tienen caracteres cirílicos, por lo que estoy codificando los nombres de archivo de cp1251
(Windows) a cp866
(DOS), al pasar el nombre de archivo a $zip->addFile()
.
¡Muchas gracias! ¿Cómo has calculado exactamente qué codificaciones usar? – YakovL
Es php error # 53948, vea official bug report.
solución sugerida (trabajó para mí):
$zip->addFile($file, iconv("UTF-8", "CP852", $local_name));
- 1. Codificación de nombres de archivos en Java
- 2. archivo de sobreescritura en ZipArchive
- 3. Cómo almacenar datos dentro del archivo ejecutable
- 4. ¿Qué codificación usa std :: string.c_str()?
- 5. ¿Qué página de codificación/código usa cmd.exe?
- 6. ¿Qué ruta del sistema de archivos usa Context.openFileOutput() de Android?
- 7. iPhone: función hash rápida para almacenar imágenes web (url) como archivos (nombres de archivos hash)
- 8. cambiar la codificación del archivo
- 9. PHP detección de la codificación del sistema de archivos
- 10. Git: manejo de nombres de archivos de codificación mixta
- 11. ¿Alguien usa archivos de configuración para javascript?
- 12. ¿Identificar qué codificación usa PayPal IPN?
- 13. ¿Qué codificación tienen los nombres de archivo en NTFS almacenados como?
- 14. cómo saber la codificación de caracteres de los nombres de archivo (según el sistema de archivos)
- 15. Python: ¿Qué codificación se usa para procesar sys.argv?
- 16. PHP ZipArchive ¿Qué significan los valores de estado?
- 17. Codificación para archivos .py multilingües
- 18. ¿Por qué Windows establece la propiedad de "tiempo creado" del nuevo archivo creado en el pasado?
- 19. ¿Para qué se usa el espacio de nombres en C++?
- 20. php crear cremalleras sin ruta de acceso a los archivos dentro del zip
- 21. Codificación de rutas de archivos
- 22. ¿Qué archivo usa System.Configuration.ConfigurationManager.AppSettings?
- 23. Uso de archivos XML para almacenar datos
- 24. ¿Qué caracteres debo escapar/desinfectar para los nombres de archivo?
- 25. ¿Dónde almacenar archivos .properties para Java?
- 26. convención de codificación del espacio de nombres raíz en C++
- 27. Configuración de permisos en ZipArchive
- 28. Convenciones de codificación - Enumeración de nombres
- 29. Almacenar un archivo XML dentro de una DLL compilada
- 30. creando un archivo zip en php sin usar ziparchive
Zip es un formato bastante viejo, y anterior a Unicode. Es probable que las versiones antiguas anteriores al 2007 solo usen ascii extendido estándar. Después de '07, la nueva especificación permitió UTF-8. Compruebe qué versión de archivo está generando. –