Los archivos con nombres con caracteres Unicode se corrompen en la tarjeta SD

Al montar mi tarjeta SD en mi galaxy SIII, los archivos y las carpetas de la tarjeta con caracteres que no están en el rango ASCII se corrompen. Esto sucede simplemente seleccionando 'Desmontar tarjeta' en la configuración de Almacenamiento y volviendo a montar. No es necesario quitar físicamente la tarjeta y volver a colocarla. Apagar y volver a encender el teléfono también da como resultado daños.

Cuando se ven las carpetas con un administrador de archivos en el teléfono, se muestran como archivos de tamaño 0 con una fecha del 31 de diciembre de 1969 (que es la época de Linux) y no se puede navegar para ver su contenido. Se muestran como carpetas vacías. Los archivos pasan a tamaño cero con esa misma fecha y no se pueden abrir ni mostrar en la Galería, reproductor de música, etc. Se abren como una carpeta vacía. (Ver imagen abajo)

Estoy usando la versión estándar de Android 4.1.2.

La tarjeta es una tarjeta micro sdxc SanDisk de 64 gb (clase 10). El problema ocurría cuando la tarjeta estaba formateada de fábrica (con exFAT) y también después de formatear con el teléfono (configuración > almacenamiento).

Ejemplos de nombres de archivos que causan la corrupción de carpetas son "Aṣa" o "דניאל". No importa si el archivo se copió a la tarjeta usando una transferencia USB o sacando la tarjeta y usando un lector en una PC con Windows, o si se cambió el nombre (usando el teléfono) una vez que el archivo estaba en la tarjeta.

Los archivos con esos mismos nombres no se corrompen si están en la memoria interna del teléfono y puedo usarlos sin problema.

Al sacar la tarjeta y usarla en una PC con Windows 7 se pueden ver los archivos. Pero a veces las carpetas afectadas aparecen duplicadas. Es decir, dos veces con el mismo nombre los dos. Verificar el disco con Windows informa errores e intenta corregirlos. Pero luego, al volver a colocar la tarjeta en el teléfono, los archivos se corrompen nuevamente.

¿Cómo puedo evitar que ocurra esta corrupción?

Así es como el administrador de archivos muestra el archivo o las carpetas dañados

Actualización: con una tarjeta de 2 GB formateada con archivos FAT32 no se corrompió. Pero después de formatearlo en exFAT pude reproducir la corrupción del archivo. Creo que puedo descartar una mala tarjeta SD.

Más información, este es un informe de Windows 7 después de ejecutar checkdisk. Tenga en cuenta que los 3 archivos existían en el directorio TestFolder, que estaba dañado:

[Window Title]
Checking Disk Removable Disk (M:)

[Main Instruction]
Some problems were found and fixed

[Content]
Any files that were affected by these problems were moved to a folder named "Found" on the device or disk. Your device or disk is now ready to use.

If you removed the device or disk before all files were fully written to it, parts of some files might still be missing. If so, go back to the source and recopy those files to your device or disk.

[^] Hide details  [Close]

[Expanded Information]
Volume Serial Number is 6518-E54A
Windows is verifying files and folders...
Corruption was found while examining files in directory \TestFolder\ (0).
Corruption was found while examining files in directory \TestFolder\ (3).
Corruption was found while examining files in directory \TestFolder\ (6).
Corruption was found while examining files and directories.
File and folder verification is complete.
Windows has made corrections to the file system.

  62363648 KB total disk space.
  41656576 KB in 43 files.
       768 KB in 6 indexes.
       256 KB in use by the system.
  20706048 KB available on disk.

    131072 bytes in each allocation unit.
    487216 total allocation units on disk.
    161766 allocation units available on disk.

Las carpetas no se corrompen si se crean en el teléfono con nombres en hebreo, luego se desmontan y verifican en Windows. Solo después de volver a montar en el teléfono.

MÁS DATOS: creo que esta es información relevante de adb logcat:

I//system/bin/fsck.exfat( 1897): fsck.exfat 1.1.0p2

I//system/bin/fsck.exfat( 1897): [fsck] Invalid dir entry: (92675,0)
I//system/bin/fsck.exfat( 1897): [fsck] Wrong dir entry name hash
I//system/bin/fsck.exfat( 1897): [fsck] Successfully recovered

I//system/bin/fsck.exfat( 1897): Filesystem was modified.
I/logwrapper( 1897): /system/bin/fsck.exfat terminated by exit(4)

W/Vold    ( 1897): exfat -> Filesystem modified - rechecking (pass 2)
E/Vold    ( 1897): MDM :: sdCardWriteAccessBlocked 0
D/Vold    ( 1897): Detected exFAT file system.

Y cuando arranco sin nombres de archivo problemáticos, obtengo un pequeño y lindo

I//system/bin/fsck.exfat( 1897): No errors
I/Vold    ( 1897): exfat -> Filesystem check completed OK 

Y adb shellpuedo intentar ver a los alborotadores (después de volver a montar, observe 2 directorios con aparentemente el mismo nombre, que en una consola de Windows parece generarse como 2 caracteres por carácter Unicode):

shell@android:/storage/extSdCard/Test $ ls * -l
ls * -l
drwxrwxr-x system   media_rw          2013-02-18 18:39 אבג
אבג: No such file or directory
1|shell@android:/storage/extSdCard/Test $
A primera vista, diría que esto tiene que ver con conjuntos de caracteres incompatibles utilizados (UTF8 en el lado de Android y cualquier conjunto de caracteres específico de Windows en la PC), pero los nombres de los archivos se ven escritos correctamente en su captura de pantalla... No ASCII Los caracteres en los nombres de los archivos parecen causar muchos problemas en algunos casos (no es el primero que veo esta semana ), por lo que trato de evitarlos en la medida de lo posible. Afortunadamente, todos mis álbumes de Ethnix usan ASCII estricto de 7 bits en los nombres de los archivos :)
@izzy Una cosa con la que tendré que actualizar la pregunta es que los problemas ocurren incluso si la tarjeta nunca se usa en Windows. Los archivos creados en el teléfono y luego renombrados a hebreo se corrompen en el siguiente montaje de la tarjeta. Los archivos en el almacenamiento interno están bien.
¡Eso es de hecho un hecho importante para incluir! Entonces, solo afecta a la tarjeta sd externa : la " tarjeta sd " interna (¿el SGS3 tiene tal?) No tiene ese problema, ni tampoco la "memoria del teléfono" (si puede probar)? En este caso, parece un error con mounto fscken combinación con [ex]FAT. La pregunta es: ¿sucede en el momento del montaje o al desmontar (es decir, después de desmontar, sacar la tarjeta y usar un lector de tarjetas en su PC, ya están codificadas)?
@Izzy Agregué esa información. La corrupción ocurre en el montaje, no en el desmontaje.
En StickMount (una aplicación para montar una unidad flash), hay una opción que dice "usar UTF8 IO si el kernel lo admite". ¿Será esto alguna pista?
@Narayanan eso podría ser una pista. No estoy seguro, pero puedo imaginar que el proceso de montaje intenta detectar automáticamente algo, falla (y aquí rompe algo), pero finalmente lo monta correctamente (cuando ya está roto). Entonces, si uno pudiera omitir el primer paso (y hacer que se monte correctamente desde el principio), eso podría resolver el problema. frozenkoi: Si tiene la posibilidad de obtener un logcat/ dmesgdel proceso de inicio (por ejemplo, adb logcatinmediatamente después del arranque, cuando las entradas relevantes aún están en caché), ¡eso ayudaría!
@izzy Agregó la información sobre lolcat. Poner el registro completo me pareció excesivo. Y esto empieza a parecerse más a un informe de error. No he podido encontrar dónde enviar a Samsung esta información.
Quiere decir logcat, no Lolcat :) Y de sus entradas veo que estaba en lo cierto con mi primera conjetura (caracteres incompatibles). ¿Cómo llegó allí esa entrada que citó lsal final de su pregunta? Ese parece uno de los alborotadores. ¿Cómo debería / se leyó ese nombre originalmente? PD: No son "dos directorios con el mismo nombre", el primero es una salida "normal" ls, el segundo lo repite en un mensaje de error. Parece que a este goyishe Android realmente no le gusta el hebreo...
@Izzy (a) Quise decir totalmente lolcat(b) Creé una carpeta con el administrador de archivos que viene con el SIII y lo nombré אבג. Luego reinicié el teléfono.
LOL realmente lolcat - lindo... Sí, si es un informe de error, este podría ser el lugar equivocado. Si encontró una solución/arreglo, ¡no olvide hacérnoslo saber! Buena suerte y חג פסח כשר
Publicado en el sitio de desarrolladores de Samsung: developer.samsung.com/forum/board/thread/…

Respuestas (4)

Actualicé mi S3 de Android 4.1.2 (ROM de Samsung) a 4.3 hace un par de días. El problema me había ocurrido constantemente durante un año y medio, exactamente como se describe anteriormente, en dos versiones 4.0.x (ICS), así como en Jelly Bean 4.1, pero en 4.3 parece que finalmente se solucionó: después de la actualización. Copié muchos archivos con nombres hebreos Unicode en mi tarjeta microSD, y han sobrevivido a numerosos desmontajes/remontajes de la tarjeta y reinicios del teléfono sin problemas.

Por cierto, otro problema que había encontrado era que los escaneos automáticos de las carpetas de medios en la tarjeta (realizados por la aplicación del sistema "Almacenamiento de medios" de Android), que ocurren cada vez que se inserta una tarjeta o se desconecta el teléfono del USB, estaban tomando un mucho tiempo (a veces horas). Esto, a su vez, causó problemas con la sincronización de mi gran biblioteca de música entre mi Mac y mi teléfono usando la utilidad iSyncr. Este problema también desapareció por completo, y sospecho que el escáner de medios de Android no estaba lidiando bien con los archivos corruptos.

Detalles adicionales: Teléfono: GT-I9300 Versión internacional, sin raíz, con el firmware oficial israelí sin marca de Samsung. Tarjeta: SanDisk 64 GB Clase 10 (igual que la IIUC original de Asker), formateada en exFAT en una Mac. Ni siquiera me molesté en volver a formatear después de la actualización 4.3: simplemente monté la tarjeta en la Mac para borrar todos los archivos corruptos existentes de longitud 0, que, como se señaló, no pueden ser eliminados por las diversas utilidades de archivos de Android.

bueno escuchar Todavía estoy esperando que la actualización esté disponible para mi operador.
La actualización estuvo disponible hace un par de días para el proveedor de mi teléfono, es decir, bloqueado. He podido mantener mis archivos hasta ahora.

He experimentado lo mismo con mi tarjeta Sandisk Micro SD clase 10 de 32 gb en el Galaxy Tab 2. La tarjeta SD es genuina, así que sé que ese no es el problema.

Sin embargo, he encontrado que esto funciona para mí.

  1. Formatee la tarjeta en su PC o Mac, al sistema de archivos NTFS.
  2. Descargue la aplicación apk Paragon NTFS / HFS para su dispositivo Android
  3. Sin NINGUNA aplicación NTFS para Android, Android NO reconocerá el formato de la tarjeta SD insertada ya que Android solo reconoce el sistema de archivos FAT
  4. Coloque la tarjeta Micro SD en el dispositivo y reinícielo (si el ícono de la tarjeta aparece en la barra de notificaciones, abajo a la derecha, ignore)
  5. Vaya a y ábralo en Android Paragon NTFS / HFS tool apk y verifique el disco / formato usando la aplicación de Android
  6. Reinicie el dispositivo nuevamente, con la tarjeta SD insertada, deje la tarjeta insertada y conecte el dispositivo Android a la PC, el disco externo ahora debería estar disponible formateado en NTFS

La tarjeta debe MONTARSE AUTOMÁTICAMENTE a través de la aplicación Paragon NTFS cuando el dispositivo está encendido.

He intentado todos los métodos posibles para tener la tarjeta SD en la FAT 32, pero simplemente no dura, los nombres de las carpetas cambian, los archivos desaparecen.

Según el sitio de Samsung , era un error que ahora está solucionado y que se lanzará en la próxima actualización de firmware (siempre que sea posible).

No te queda otra solución que comprarte otro. De nada. ;)