Los indicios no son un diagnóstico
Filas que parecen iguales pueden no coincidir; búsquedas pueden fallar y longitudes sorprender. Acentos compuestos, apóstrofos y reglas distintas causan síntomas parecidos. Aísla una línea antes de cambiar el archivo. Para material confidencial, usa un ejemplo inventado. Identificar códigos aclara qué reparación hace falta; borrar categorías amplias oculta la causa.
Nombra los puntos de código
General Punctuation incluye U+200B ZERO WIDTH SPACE, U+200C ZERO WIDTH NON-JOINER, U+200D ZERO WIDTH JOINER y U+2060 WORD JOINER. Sus funciones difieren. Registra código y posición. El marcador [U+200B] hace visible una ubicación, pero no es el carácter original: contarlo añade notación. Separa copia de trabajo y vista diagnóstica.
La apariencia puede ocultar otra secuencia
AB tiene dos puntos; A + U+200B + B tiene tres puntos y tres grafemas en el ejemplo, casi con igual aspecto. A + U+200D + B conserva tres puntos, pero agrupa dos grafemas. No supongas que todo invisible añade un grafema. Los números no clasifican caracteres: inspecciona códigos y método.
Algunos invisibles son necesarios
Los joiners unen figuras de emoji; borrarlos puede separarlas. Otras escrituras usan elementos que afectan la unión de letras. No apliques una limpieza de listas italianas indiscriminadamente a texto multilingüe. Consulta emoji y recuento. Revisa vista previa y conserva originales; menor longitud no prueba una mejor representación.
Los espacios no separables son otro caso
Tienen ancho y mantienen parejas en una línea. Sustituirlos puede mejorar comparación; borrarlos puede unir palabras. Distingue conversión y eliminación. La guía de espacios no separables compara U+0020, U+00A0 y U+202F. Elegir depende del trabajo, no de una regla universal de limpieza.
Cambia una categoría cada vez
Duplica, identifica una categoría, prueba pocas líneas y registra ocurrencias modificadas. Para buscar, considera claves separadas; para exportar, comprueba la importación posterior. No mezcles eliminación, reducción de espacios y mayúsculas: oculta la causa. Revisa colisiones antes de borrar filas y declara qué significa duplicado.
Respeta los datos de identidad exacta
Contraseñas, firmas, códigos y valores técnicos pueden requerir secuencias exactas. Sigue su formato o al responsable de los datos, no una regla editorial. Los controles de dirección en escrituras mezcladas exigen contexto. Esta guía no valida seguridad ni detecta exhaustivamente secuencias; ayuda a documentar cambios proporcionados al problema.
Comprueba aspecto y contenido
Revisa representación y códigos, repite búsqueda o comparación fallida y mide en el contador. Declara si retiraste, sustituiste o reagrupaste elementos. Si persiste, revisa normalización y codificación de origen. No amplíes el borrado solo para forzar igualdad. Guarda ejemplo, original y registro para corregir la regla.
Describe claramente las posiciones
Comprueba si el inspector numera unidades UTF-16 o símbolos percibidos, sobre todo tras emoji compuestos. Incluye texto vecino: «U+200B entre A inicial y B final» evita índices ambiguos. Conserva saltos en pruebas multilínea y registra blancos borrados, que desplazan posiciones. Guarda muestra original, vista de códigos y resultado juntos.
Identifica antes de cambiar
| Elemento | Pregunta | Posible decisión |
|---|---|---|
| U+200B en una lista | ¿Hace falta la separación? | Probar conservar o retirar |
| U+200D en emoji | ¿Une la secuencia visual? | Conservar secuencia completa |
| U+00A0 entre palabras | ¿Deben permanecer juntas? | Conservar o sustituir por espacio |
| Control de dirección | ¿Afecta al orden? | Examinar contexto sin borrar en bloque |
Fuentes y comprobaciones
- Unicode: General Punctuation · Identification of zero-width spaces, joiners and narrow no-break space
- Unicode UTS #51: Unicode Emoji · Emoji sequences, modifiers and zero-width joiners
- MDN: Intl.Segmenter · Locale-aware segmentation including graphemes