El saboteador silencioso
Copia un fragmento de codigo de un articulo de blog, lo pega en su terminal y obtiene un error crипtico. El codigo parece correcto. Tras diez minutos se da cuenta: las comillas estan ligeramente curvadas. Esas son comillas tipograficas (tambien llamadas comillas curvadas), y rompen el codigo.
Esta es una de las fuentes mas comunes de errores invisibles para los desarrolladores, especialmente al copiar de:
- Procesadores de texto (Microsoft Word, Google Docs)
- Editores CMS (WordPress, Medium, Notion)
- Documentos PDF
- Algunos clientes de correo
- Texto generado por IA formateado para lectura en lugar de ejecucion
Comillas rectas vs comillas tipograficas
Comillas rectas (lo que espera el codigo):
', U+0027, apostrofo ASCII / comilla simple", U+0022, comilla doble ASCII
Comillas tipograficas (lo que insertan los procesadores de texto):
', U+2018, comilla simple izquierda', U+2019, comilla simple derecha / apostrofo", U+201C, comilla doble izquierda", U+201D, comilla doble derecha
Son caracteres Unicode completamente diferentes. Ningun lenguaje de programacion, shell o formato de configuracion los trata como equivalentes a sus contrapartes ASCII.
Que se rompe
Comandos de shell, bash, zsh, PowerShell usan comillas ASCII para delimitar cadenas. Las comillas tipograficas causan un error de sintaxis.
JSON, JSON requiere U+0022 (") para delimitadores de cadenas y claves. Las comillas dobles tipograficas producen un error de analisis en cualquier analizador JSON.
Python, JavaScript, PHP, los literales de cadena deben usar caracteres de comilla ASCII. Las comillas tipograficas causan un SyntaxError.
Archivos de configuracion, YAML, TOML, archivos .env, configuracion SSH, todos esperan ASCII.
De donde vienen las comillas tipograficas
La mayoria de los procesadores de texto aplican "autocorrección" que reemplaza las comillas rectas por curvadas al escribir. Cuando copia texto de estas fuentes y lo pega en un editor de codigo, las comillas tipograficas vienen con el texto.
Como encontrarlas y corregirlas
En un editor de codigo
La mayoria de los editores pueden buscar por regex. El patron [''""‛‟] coincide con variantes comunes de comillas tipograficas.
Con una herramienta de limpieza de texto
El Limpiador tipografico de este sitio convierte todas las comillas curvadas, puntos suspensivos, rayas y otros caracteres tipograficos de vuelta a sus equivalentes ASCII con un clic.
En el terminal
sed -i "s/\xe2\x80\x98/'/g; s/\xe2\x80\x99/'/g; s/\xe2\x80\x9c/\"/g; s/\xe2\x80\x9d/\"/g" archivo.txt
Prevenir la autocorreccion en el origen
En Word: Archivo, Opciones, Revision, Opciones de Autocorreccion, Autoformato mientras escribe, desmarcar "Reemplazar comillas rectas con tipograficas".
En Google Docs: Herramientas, Preferencias, desmarcar "Usar comillas tipograficas".
El problema de los puntos suspensivos
El mismo problema se aplica al caracter de puntos suspensivos ... (U+2026), que es un unico caracter que parece ... (tres puntos) pero no es equivalente en codigo.
Resumen
Las comillas tipograficas estan disenadas para la lectura de texto, no para escribir codigo. Son caracteres Unicode diferentes de las comillas ASCII y romperan cualquier codigo, configuracion o comando CLI que las reciba. Trabaje siempre en un editor de texto plano (VS Code, Sublime, Vim) en lugar de un procesador de texto al escribir codigo.