Guía
Encuentra caracteres ocultos en VS Code
Activa el resaltado Unicode, busca puntos de código sin ancho con una expresión escapada y limpia el archivo antes de que fallen una compilación o un diff.
Por Kris Vinters · Publicado · 3 min de lectura
Usa primero el resaltado Unicode de VS Code
Abre Configuración y busca Unicode Highlight. VS Code agrupa avisos en caracteres invisibles, ambiguos y no ASCII. Pasa el cursor para ver el motivo. Los valores pueden depender de la confianza del espacio de trabajo, comentarios, cadenas, fuentes y configuraciones regionales permitidas.
Los tres ajustes controlan las clases por separado. Activa la que necesites en vez de tratar todo Unicode como error. Las letras no ASCII son normales en traducciones, nombres y pruebas; los controles invisibles merecen una revisión más precisa.
editor.unicodeHighlight.invisibleCharacterseditor.unicodeHighlight.ambiguousCharacterseditor.unicodeHighlight.nonBasicASCII
El resaltado ayuda a revisar, pero no es un análisis exhaustivo. VS Code describe la clase ambigua como heurística; la fuente y la configuración regional influyen.
Busca con una expresión regular escapada
Abre Buscar, activa expresiones regulares e introduce el patrón mostrado. Solo contiene ASCII visible, pero busca U+200B a U+200D y U+FEFF. Revisa cada coincidencia antes de reemplazarla.
Expresión: [\u200B-\u200D\uFEFF]
El rango cubre ZERO WIDTH SPACE, ZERO WIDTH NON-JOINER, ZERO WIDTH JOINER y el carácter de marca de orden de bytes. Busca también \u2060 para WORD JOINER. No borres automáticamente un joiner que pueda ser necesario en emoji o escritura ligada.
Un carácter oculto puede dividir un identificador, hacer distintas dos claves, romper una búsqueda, alterar un token o crear un diff en una línea que parece igual. Una marca al inicio del archivo también puede tratarse de forma distinta al mismo punto de código en medio.
U+200B ZERO WIDTH SPACEU+200D ZERO WIDTH JOINERU+FEFF ZERO WIDTH NO-BREAK SPACEU+2060 WORD JOINER
Limpia todo el texto y revisa los hallazgos
En un archivo de texto, selecciona todo, cópialo al limpiador y revisa los hallazgos antes de devolver la versión limpia. El pase estándar quita caracteres sin ancho aislados, pero conserva un joiner cuando el motor lo reconoce como necesario en emoji o escritura ligada.
Para .html compatible, o documentos .docx y .odt, usa el informe de documento. No acepta cualquier formato fuente; para .js, .ts, .json o .md usa el limpiador mediante pegado.
Abrir el limpiador de caracteres sin anchoAbrir el informe de documento
Un carácter oculto puede explicar un fallo de compilación o diff. No explica quién escribió el código o la prosa. El limpiador trata puntos de código; el informe de prosa devuelve mediciones sin veredicto.
Preguntas sobre caracteres ocultos en VS Code
¿VS Code resalta todos los caracteres invisibles por defecto?
No. Los valores y excepciones pueden depender de la confianza del espacio de trabajo, comentarios, cadenas, caracteres permitidos y regiones. Busca Unicode Highlight y revisa los valores efectivos.
¿La expresión encuentra todos los caracteres Unicode ocultos?
No. Busca U+200B a U+200D y U+FEFF. Añade puntos como \u2060 para WORD JOINER o usa el limpiador para revisar una tabla más amplia.
¿Por qué un carácter sin ancho puede romper una compilación?
Los analizadores, identificadores, sumas y comparaciones trabajan con puntos de código, no con la apariencia. Un punto invisible puede dividir un token o hacer desiguales dos cadenas idénticas a la vista.
Encuentra más explicaciones prácticas en todas las guías sobre caracteres ocultos y los límites de la limpieza.