Detector de Caracteres Invisibles

Pega cualquier texto y el detector informa sobre cada carácter invisible que contiene: espacios de ancho cero, marcas direccionales, BOMs, guiones suaves, espacios no separables y el grupo de puntos de código de control Unicode que parecen aire vacío pero rompen la búsqueda, los diffs y el copiar-pegar. Cada coincidencia viene con su punto de código (U+200B), su nombre oficial en Unicode y su posición en la cadena, para que puedas localizar dónde se oculta un error misterioso antes de eliminarlo.

Cómo detectar caracteres invisibles

  1. 1

    Pega el texto

    Introduce la cadena sospechosa: un fragmento de código, un mensaje copiado, un valor de configuración.

  2. 2

    Ejecuta el escaneo

    La herramienta recorre cada punto de código y marca cualquier coincidencia con la lista de caracteres invisibles/formato.

  3. 3

    Revisa el informe

    Cada coincidencia muestra su posición (indexada desde 1), su punto de código en forma `U+HHHH` y su nombre en Unicode (Espacio de Ancho Cero, BOM, etc.).

  4. 4

    Limpia el texto

    Usa la acción de reemplazo para eliminar o visualizar los caracteres ocultos, luego pega la versión saneada de nuevo.

Caracteres invisibles y de dónde provienen

Estos caracteres existen por razones legítimas (diseño de texto, dirección de script, caracteres combinados). Se convierten en errores cuando se filtran fuera del contexto para el que fueron diseñados y entran en código, configuración, consultas de búsqueda o nombres de usuario.

Caracteres que busca el detector

Punto de Código Nombre Dónde suele colarse
U+200B Espacio de Ancho Cero Editores de texto enriquecido, procesadores de texto
U+200C No conector de ancho cero Tipografía persa, hindi
U+200D Conector de ancho cero Secuencias de emoji, escrituras índicas
U+200E Marca de Izquierda a Derecha Texto que contiene scripts LTR y RTL
U+200F Marca de Derecha a Izquierda Igual
U+202A..E Incrustación / anulación Igual; a veces usado maliciosamente (Trojan Source)
U+2028 Separador de Línea Copiado de Word, rompe codificadores JSON
U+2029 Separador de Párrafo Igual
U+FEFF Marca de Orden de Bytes Archivos guardados como UTF-8 con BOM en Notepad
U+00A0 Espacio No Separador Espacio tipográfico de Word
U+00AD Guion Suave Sugerencias de guion en texto enriquecido

Síntomas comunes de un error de carácter oculto

  • Una comparación de cadenas que “debería” ser igual no lo es. Copia los valores en esta herramienta y verifica los conteos de bytes.
  • Una expresión regular que coincide a simple vista pero falla en el código. A menudo es un U+00A0 disfrazado de espacio.
  • Un analizador JSON se bloquea con una carga pegada. Generalmente un BOM al inicio, o U+2028 en un literal de cadena que JavaScript rechaza dentro de JSON.
  • El título SEO tiene la longitud incorrecta. Un espacio de ancho cero te empuja más allá de un límite sin ningún cambio visible.

El ángulo del Trojan Source

Los caracteres de anulación bidireccional (U+202E, U+2066..U+2069) pueden hacer que el código fuente se renderice en un orden mientras se compila en otro, la clase de ataques “Trojan Source”. Si revisas código de colaboradores en los que no confías, pasa sus diffs por este detector antes de hacer merge.

Preguntas frecuentes

Notepad y algunas herramientas antiguas de Windows predeterminan a “UTF-8 con BOM”. El BOM (U+FEFF) está bien para aplicaciones de Windows pero rompe muchos pipelines de shell, archivos PHP (el BOM se refleja como salida antes de la etiqueta <?php) y analizadores JSON.

Se ve como un espacio normal en la pantalla pero se comporta de manera diferente: no permite un salto de línea y no lo captura la mayoría de las variantes de regex \s en todos los lenguajes. A menudo termina dentro de rutas de archivos, direcciones de correo electrónico y nombres de usuario copiados de fuentes de texto enriquecido.

No siempre. En texto árabe, persa o devanagari, el unidor y el no unidor de ancho cero son semánticamente requeridos. En código, configuración y la mayoría del texto en inglés, elimina libremente. En contenido de lenguaje natural, usa el detector para inspeccionar antes de eliminar.

No, el análisis se ejecuta para la solicitud actual y nada de lo que pegues se almacena o registra después de que se construye la respuesta.

Herramientas relacionadas

Herramienta disponible en otros idiomas