Por qué se desfiguran los nombres de archivo en un ZIP y cómo arreglarlo - Shift_JIS y UTF-8

· 5 min de lectura

La respuesta corta: las dos partes no coinciden en la codificación del nombre

Cuando un ZIP se abre y solo los nombres de archivo en japonés aparecen como cadenas del tipo «Ä╩É^âè» o «蜀咏悄繝ェ», el programa que creó el archivo y el que lo abre no coinciden en cómo están codificados los nombres. Los datos de dentro están intactos y, si se vuelven a leer los nombres con la codificación correcta, recuperan su forma original.

La especificación de ZIP, APPNOTE.TXT (PKWARE, versión 6.3.10, revisada en noviembre de 2022), solo permite indicar la codificación de un nombre de archivo con un bit de los indicadores de propósito general (general purpose bit flag): el bit 11. Si el bit 11 de los indicadores de propósito general en la cabecera de una entrada (el Language encoding flag, o EFS) está activado, el nombre debe estar en UTF-8. Ese indicador llegó con la versión 6.3.0, en septiembre de 2006.

Cuando el bit 11 no está activado, la especificación dice que el nombre debe seguir la codificación original de ZIP, que es la IBM Code Page 437 (CP437, apéndice D). CP437 es la tabla de caracteres del IBM PC de los años ochenta y no contiene ningún carácter japonés. Aun así existen innumerables ZIP con nombres en japonés, porque muchos programas nunca activaron el indicador y escribieron sin más en el campo del nombre los bytes de la codificación del propio PC (en Windows japonés, cp932, una variante de Shift_JIS). Ante un nombre sin indicador, el programa que abre el archivo solo puede adivinar la codificación, y si se equivoca aparecen caracteres sin sentido.

Hay tres formas de resolverlo: elegir de nuevo la codificación del nombre en el programa con el que se abre, rehacer el ZIP con los nombres corregidos o, en el lado de quien lo crea, activar el indicador UTF-8 o usar solo nombres ASCII. Las secciones siguientes empiezan por cómo leer el desfigurado.

Windows y macOS escriben los nombres de forma distinta

Según la referencia «Code Page Identifiers» de Microsoft, Windows en japonés usa cp932 (página de códigos 932, con el nombre shift_jis en la tabla). La documentación del módulo zipfile de Python también advierte que algunas implementaciones antiguas escriben los nombres en la codificación o página de códigos local, sobre todo en Windows.

¿Y macOS? En una comprobación con macOS 26.5 en octubre de 2026, tanto la orden ditto del sistema como la orden zip incluida (Info-ZIP Zip 3.0) escribieron un archivo llamado 写真リスト.txt («lista de fotos» en japonés) con bytes UTF-8 y sin activar el bit 11. El resultado es un ZIP cuyos nombres están en UTF-8 sin que nada lo indique.

Cómo se escriben los nombres japoneses (comprobado en octubre de 2026):

  • ditto en macOS 26.5: nombres en UTF-8, bit 11 no activado
  • zip en macOS 26.5 (Zip 3.0): nombres en UTF-8, bit 11 no activado
  • zipfile en Python 3.14: nombres en UTF-8, bit 11 activado
  • Programas antiguos de Windows (según la documentación de Python): nombres en La página de códigos del PC (cp932 en japonés), bit 11 no activado

La lista muestra los dos sentidos clásicos del problema. Un ZIP en cp932 hecho en Windows se desfigura en un programa que da por hecho UTF-8, y un ZIP en UTF-8 sin indicador hecho en un Mac se desfigura en un programa que da por hecho cp932. Pero si el lado que abre adivina bien, no pasa nada: el mismo ditto del Mac extrajo un ZIP con nombres en cp932 y recuperó correctamente 写真リスト.txt (en un sistema en japonés). Que los nombres se desfiguren o no depende de la pareja formada por la herramienta que crea el archivo y la que lo abre.

En Linux ocurre lo mismo. El manual de unzip de Debian (trixie) advierte que los nombres con caracteres de 8 bits pueden no ser portables entre sistemas, porque cada herramienta y plataforma usa codificaciones distintas para ellos.

Leer el desfigurado para encontrar la causa

La forma de un nombre desfigurado indica qué codificación se leyó como cuál. Estos son los tres modos de leer mal 写真リスト.txt, reproducidos con Python 3.14.

Cómo se desfigura 写真リスト.txt
Nombre que se veCodificación realLeído como
Ä╩É^âèâXâg.txtShift_JIS (cp932)CP437
蜀咏悄繝ェ繧ケ繝�.txtUTF-8Shift_JIS (cp932)
�ʐ^���X�g.txtShift_JIS (cp932)UTF-8
  • Letras latinas con acentos y símbolos de recuadro (Ä, É, ╩ y similares): un nombre en Shift_JIS leído como CP437, el valor por defecto de la especificación. Lo hacen las herramientas que siguen la especificación al pie de la letra, como zipfile de Python
  • Kanji poco habituales mezclados con katakana de ancho medio (destacan 繝 y 縺): un nombre en UTF-8 leído como Shift_JIS. Es lo que sale al abrir un ZIP en UTF-8 sin indicador hecho en un Mac con una herramienta que da por hecho cp932. En UTF-8, el hiragana y el katakana son secuencias de tres bytes que empiezan por E3, así que leídos como Shift_JIS repiten una y otra vez caracteres como 繝 y 縺
  • Muchos caracteres de sustitución (�): un nombre en Shift_JIS leído como UTF-8, con los bytes no válidos en UTF-8 descartados. Esta forma no siempre se puede deshacer, así que lo seguro es elegir de nuevo la codificación en la herramienta antes de extraer

Si se extrae con los nombres desfigurados, los archivos se guardan con esos nombres. Volver a abrir el ZIP original con la codificación correcta es más rápido que renombrar después, y no se escapa ninguno.

La solución: volver a abrirlo con la codificación correcta

Lo más sencillo es volver a abrir el archivo en una herramienta que permita elegir la codificación de los nombres. El extractor de ZIP de piclab detecta automáticamente la codificación de los nombres japoneses de un ZIP y, si aun así se ven mal, permite elegir Shift_JIS, GBK u otra codificación en el ajuste de codificación de los nombres de archivo. Selecciona los archivos y guárdalos, y obtendrás un ZIP con los nombres corregidos. Todo ocurre dentro del navegador, así que los archivos nunca se envían fuera.

Si tienes instalado Python 3.11 o posterior, la orden estándar de zipfile también sirve. Según la documentación de Python, --metadata-encoding, añadida en la 3.11, fija la codificación con la que se leen los nombres sin indicador (no afecta a los nombres con indicador, en los que manda UTF-8).

python3 -m zipfile --metadata-encoding cp932 -l archive.zip
python3 -m zipfile --metadata-encoding cp932 -e archive.zip out/

La primera línea lista el contenido para comprobar los nombres; la segunda extrae en out/. En octubre de 2026, con un ZIP creado con nombres en cp932, Python 3.14 mostró el archivo como Ä╩É^âèâXâg.txt sin la opción y como 写真リスト.txt con cp932. Si el que se desfigura es un ZIP en UTF-8 hecho en un Mac, usa utf-8 en lugar de cp932.

Para un ZIP en chino elige gbk, para uno en coreano cp949, y así sucesivamente: la codificación del sistema que lo creó. Si no estás seguro, guíate por la tabla de «Leer el desfigurado para encontrar la causa». El origen de la codificación se explica en la entrada del glosario Shift JIS.

Prevención: activar el indicador UTF-8 o usar nombres ASCII

Al crear un ZIP para alguien cuyo sistema no conoces, escribir los nombres de forma inequívoca le ahorra problemas.

  • Crearlo con el indicador UTF-8: zipfile de Python escribe automáticamente en UTF-8 los nombres con caracteres no ASCII y activa el bit 11 (según la documentación y una prueba de octubre de 2026). Un ZIP creado con python3 -m zipfile -c archive.zip 写真リスト.txt llevaba el indicador. Con el indicador presente, cualquier herramienta que siga la especificación lee UTF-8 sin adivinar
  • Usar nombres solo ASCII: si los nombres usan solo caracteres del rango ASCII, como photo-2026-10-01.jpg, los bytes son los mismos en cualquier codificación y nada se desfigura. Los nombres formados por fecha y número, además, se ordenan bien
  • Probar antes de enviar de un Mac a Windows: como muestra la lista de «Windows y macOS escriben los nombres de forma distinta», las herramientas estándar de macOS escriben UTF-8 sin indicador. Antes de enviar, comprueba una vez que el archivo se abre en un sistema como el del destinatario, o cambia los nombres a ASCII antes de comprimir

Para pasar un lote de fotos a nombres ASCII antes de enviarlas, sirven los pasos de renombrado masivo de archivos de imagen. Los consejos para quien recibe en el móvil están en cómo abrir un ZIP con contraseña en el móvil.

Preguntas frecuentes: por qué 7z y RAR casi no desfiguran los nombres

¿También se desfiguran los nombres en 7z y RAR? Rara vez. 7-Zip incluye los nombres de archivo Unicode entre las características del formato 7z, y la descripción del formato RAR 5.0 de RARLAB establece que el campo del nombre en la cabecera de archivo está en UTF-8. 7z guarda los nombres en Unicode y los archivos RAR 5.0 fijan los nombres en UTF-8, así que los lectores no se dividen por un indicador como ocurre con ZIP.

¿El texto ilegible dentro de los archivos (texto o CSV) es el mismo problema? No. El apéndice D de APPNOTE indica que el bit 11 no dice nada sobre la codificación del contenido ni de la contraseña. Un CSV que se ve mal en Excel después de extraerlo tiene su propio problema de codificación, así que hay que indicar la codificación al importarlo.

¿Puede un ZIP guardar aparte una copia UTF-8 de cada nombre? Sí. El apéndice D de APPNOTE explica que Ed Gordon, del grupo Info-ZIP, definió un par de campos extra para guardar nombres y comentarios en UTF-8; el del nombre es el Header ID 0x7075, el Info-ZIP Unicode Path Extra Field. Así un archivo puede conservar el nombre en su codificación original y en UTF-8 sin activar el bit 11. El soporte depende de la herramienta: un ZIP creado con ditto en macOS 26.5 en octubre de 2026 no contenía ese campo.

¿Y si ya extraje con los nombres desfigurados? Si el ZIP original sigue ahí, extraerlo de nuevo con el método de «La solución: volver a abrirlo con la codificación correcta» es lo más seguro. Si el ZIP ya no existe, solo queda renombrar los archivos a mano.

Artículos relacionados

Cómo abrir un ZIP con contraseña en el móvil - Pasos para iPhone y Android y por qué falla

Abre un ZIP con contraseña en iPhone o Android con la app de archivos del sistema, una app dedicada o una herramienta en el navegador, y aprende a distinguir los cuatro fallos habituales: ZipCrypto frente a AES, archivos divididos, codificación de la contraseña y daños.

Renombrado masivo de archivos de imagen - Desde herramientas del sistema hasta scripts

Aprende métodos eficientes para renombrar cientos de archivos de imagen usando funciones integradas del sistema operativo, herramientas de línea de comandos y scripts de Python.

Cómo funciona el procesamiento de imágenes en el navegador - Guía de Canvas API, ImageData y Web Workers

Explicación técnica detallada del procesamiento de imágenes del lado del cliente en el navegador. Aprenda manipulación de píxeles con Canvas API, la estructura ImageData, procesamiento fuera del hilo con Web Workers y el uso de OffscreenCanvas.

Diferencias entre 7z, ZIP y RAR - Elegir por compresión, velocidad y compatibilidad

En qué se diferencian 7z, ZIP y RAR, a partir de una tabla que compara el soporte del sistema, los métodos de compresión, el cifrado, los archivos sólidos y el software necesario para crearlos, con medidas reales en documentos y qué formato elegir para enviar o para guardar.

Extracción de texto de imágenes - Guía técnica e implementación de OCR

Explicación detallada del funcionamiento técnico del OCR (reconocimiento óptico de caracteres). Comparamos Tesseract, Cloud Vision API y métodos basados en aprendizaje profundo con técnicas de preprocesamiento para mejorar la precisión.

Guía de compresión de imágenes para correo electrónico - Mantener la calidad dentro de los límites de tamaño

Aprende técnicas de compresión de imágenes para adjuntos de correo electrónico. Descubre cómo respetar los límites de tamaño mientras preservas la calidad, con configuraciones recomendadas para diversos escenarios empresariales.

Términos relacionados