También disponible en: English · Português · Français · العربية
Detector de caracteres invisibles: encuentra los ocultos
Todos los caracteres invisibles, ignorables y disfrazados de tu texto, con nombre, recuento y posición.
¿Qué es un carácter invisible?
Un carácter invisible es un punto de código que no ocupa espacio visible pero está de verdad en el texto. Algunos son útiles: un unidor de ancho cero es lo que convierte dos emojis en uno, y un guion blando marca por dónde puede partirse una palabra. Otros son estructurales, como los controles bidireccionales que permiten al árabe y al español compartir una línea. Y otros están ahí porque alguien los puso.
Dan problemas porque el software los ve y tú no. Una búsqueda que debería coincidir no coincide. Dos cadenas que parecen idénticas se comparan como distintas. Una clave de API copiada gana un carácter por el medio y deja de funcionar, sin nada en pantalla que lo explique.
Esta página los encuentra, nombra cada uno con su nombre oficial de Unicode y su punto de código, y te dice en qué parte del texto está. El ejemplo cargado arriba se lee como veinte caracteres visibles y en realidad mide cuarenta y nueve puntos de código.
Cómo usarla
- Pega el texto. Lo que sea: un mensaje, un nombre de archivo, una celda de hoja de cálculo, un commit que no hay manera de encontrar con grep. Se revisa en tu navegador y no se sube nunca.
- Lee la tabla. Cada fila es un carácter, con su punto de código, su nombre Unicode, qué tipo de cosa es, cuántas veces aparece y dónde.
- Y quítalos si quieres. Un botón elimina todos los caracteres ocultos y convierte los espacios raros en espacios normales en vez de borrarlos, para que las palabras que se veían separadas sigan separadas.
Por qué encuentra más que un limpiador
Casi todas las herramientas que quitan caracteres invisibles llevan una lista escrita a mano con los pocos con los que se topó su autor. Eso vale también para el limpiador de texto de este sitio: su lista cubre trece puntos de código, y es la razón de que exista esta página.
Unicode publica la respuesta de verdad en una propiedad llamada Default_Ignorable_Code_Point, que marca los caracteres para los que un renderizador no debe dibujar nada. Cubre 4.174 puntos de código, y 405 de ellos son caracteres asignados con nombre. Así que una lista de trece se deja fuera 392 caracteres con nombre que son invisibles por definición: los 260 selectores de variación, el bloque de etiquetas entero con sus 97 caracteres, el unidor de grafemas, la marca de letra árabe, los rellenos del hangul.
Ahora bien, no todo lo que merece marcarse es ignorable, así que la tabla dice en qué autoridad se apoya cada fila. Un espacio duro se ve perfectamente como espacio, pero no es el espacio por el que corta un analizador, y un carácter de control en mitad de una línea es invisible sin que Unicode lo llame ignorable. Se informa de ambos, y de ambos se dice lo que son.
El bloque de etiquetas y el texto que no ves
Noventa y siete caracteres entre U+E0001 y U+E007F reflejan el ASCII exactamente. La A mayúscula de etiqueta es la A más un desplazamiento fijo, el espacio de etiqueta es un espacio, y ninguno de ellos se dibuja en absoluto. Tienen un trabajo legítimo dentro de las secuencias de banderas emoji, que es como se codifican las banderas de Inglaterra, Escocia y Gales.
También son la forma de que una frase viaje dentro de un texto que parece de lo más normal. Pega aquí algo que los contenga y aparecerá arriba la línea descifrada, deletreando lo que estaba escondido. El ejemplo cargado en esta página es justo eso: veinte caracteres visibles que transportan una instrucción que nadie ve.
Esto ha pasado de curiosidad a cosa que conviene comprobar, porque hoy el texto se pega constantemente en sistemas que leen todos los caracteres y no solo los que ve una persona. Sea el texto oculto una marca de agua, un rastreador o una instrucción, el primer paso honesto es poder mirarlo.
Lo que esta página no puede decirte
No puede decirte por qué está ahí un carácter. Un unidor de ancho cero en mitad de un emoji está haciendo su trabajo; el mismo carácter entre dos letras no. La herramienta informa de lo que hay y te deja a ti el juicio, porque el mismo punto de código es legítimo en un contexto y sospechoso en otro.
También trabaja con puntos de código y no con lo que tú llamarías letras. Es la unidad correcta aquí —cada carácter de etiqueta y cada selector de variación moderno vive por encima del plano multilingüe básico, así que un detector que recorriera el texto de la forma ingenua partiría cada uno en dos y no encontraría ninguno—, pero implica que un emoji de bandera o con tono de piel cuenta como varios puntos de código y no como un símbolo.
Por último, un resultado limpio significa que no hay nada oculto que Unicode nombre. Un texto todavía puede engañar de formas que esta página no cubre, sobre todo usando letras de otro alfabeto idénticas a las latinas. Ese es otro problema, y otra página.
¿Por qué es gratis?
La lista de caracteres son unos pocos kilobytes que viajan con la página, y el análisis corre en tu navegador. Nada de lo que pegas se sube, no se registra nada y no hay cuenta que crear.
Sin registro, sin límites y sin marca de agua en nada de lo que copies.