Por qué las comillas tipográficas rompen tu código, JSON y CSV

El error apunta a una línea que parece perfecta, porque la diferencia es invisible a simple vista.

Las comillas tipográficas (“ ” ‘ ’) son caracteres Unicode distintos de las comillas rectas (" ') que exigen los lenguajes de programación y los formatos de datos. Los analizadores comparan puntos de código exactos, así que una comilla tipográfica es para ellos una letra cualquiera y la cadena nunca se abre. Sustituirlas por comillas rectas lo resuelve al instante.

Son caracteres realmente diferentes

Todo el problema cabe en una tabla:

Carácter Nombre Punto de código
" Comilla doble recta U+0022
Comilla doble de apertura U+201C
Comilla doble de cierre U+201D
' Apóstrofo recto U+0027
Comilla simple de apertura U+2018
Comilla simple de cierre U+2019

Los lenguajes de programación, JSON, CSV y los intérpretes de shell reconocen exactamente dos de estos como delimitadores de cadenas: U+0022 y U+0027. Los otros cuatro son caracteres imprimibles ordinarios, en la misma categoría que una letra o una coma.

Así que cuando un analizador se encuentra con “name”, no ve una cadena entre comillas ligeramente decorativas. Ve una secuencia de caracteres sin delimitar que empieza por un símbolo inesperado. El mensaje de error dice algo como unexpected token y señala una línea que parece completamente correcta, porque a tamaños de fuente normales la diferencia entre " y “ son unos pocos píxeles de curvatura.

PEGADO DESDE EL CHAT{ name: Ada }SyntaxError: Unexpected token '“'TRAS NORMALIZAR{ "name": "Ada" }
Las comillas tipográficas son caracteres distintos de las comillas rectas que esperan los analizadores.

De dónde vienen

Casi siempre de un software que intenta ayudar.

  • Word y Google Docs convierten las comillas rectas en tipográficas mientras escribes. Es la opción predeterminada y la mayoría de la gente nunca lo nota, porque en prosa es exactamente lo que quieres.
  • Los modelos de chat las generan porque aprendieron de prosa publicada, que se compone tipográficamente con comillas correctas.
  • macOS aplica la sustitución inteligente en todo el sistema en muchos campos de texto.
  • Los editores de CMS y los cuadros de comentarios aplican con frecuencia filtros tipográficos al texto enviado.
  • Copiar y pegar desde PDF arrastra lo que usó el compositor, que en cualquier documento producido profesionalmente son comillas tipográficas.

El hilo común es que el texto pasó por algo diseñado para leerse de camino hacia algo diseñado para analizarse. La prosa quiere comillas tipográficas; el código quiere bytes exactos. Los problemas ocurren en la frontera.

Lo mismo se aplica a algunos acompañantes que conviene conocer: el carácter de puntos suspensivos (…) en lugar de tres puntos, las rayas cortas y largas en lugar de guiones, y los espacios de no separación en lugar de los normales. Cada uno es un punto de código distinto del carácter ASCII al que se parece, y cada uno rompe un analizador de la misma forma silenciosa.

Qué se rompe, concretamente

JSON. Toda cadena en JSON debe usar U+0022. Una sola comilla tipográfica invalida el documento, y como los analizadores informan del primer fallo, un archivo con docenas de ellas requiere varias rondas para arreglarse a mano. Al pegarlo en un formateador y validador de JSON se muestra la posición exacta del primer culpable.

CSV. Las reglas de comillas existen para proteger los campos que contienen comas. Una comilla tipográfica no es un carácter de comillas, así que un campo como “Smith, John” se divide en la coma y todas las columnas siguientes se desplazan una posición. Este es más traicionero que un error de sintaxis porque falla en silencio: obtienes un archivo que se importa sin quejas y que está mal.

Código fuente. En la mayoría de los lenguajes es un error de compilación o de análisis, que al menos hace ruido. En los scripts de shell puede ser peor: rm –rf con una raya corta en lugar de un guion no es el flag que pretendías, y los argumentos entre comillas tipográficas se pasan como texto literal.

Archivos de configuración. YAML, TOML y los archivos .env aceptan silenciosamente las comillas tipográficas como parte del valor. Tu clave de API acaba con un carácter decorativo pegado, la autenticación falla y nada en el registro te dice por qué.

Expresiones regulares y búsqueda. Un patrón que contiene una comilla recta no coincidirá con texto que contiene una tipográfica, así que buscar y reemplazar devuelve silenciosamente cero resultados.

Cómo arreglarlo bien

Normaliza el texto. Pégalo en Convertir comillas tipográficas a rectas, que sustituye las cuatro variantes tipográficas por sus equivalentes ASCII e informa de cuántas ha cambiado. Para salidas de IA en concreto, Limpiar texto de IA trata las comillas junto con rayas largas, caracteres invisibles y emojis en una sola pasada.

Desactiva la fuente. Si esto sigue ocurriendo, deshabilita la sustitución:

  • Word: Archivo → Opciones → Revisión → Opciones de Autocorrección → Autoformato mientras escribe → desmarca «Comillas rectas por comillas tipográficas».
  • Google Docs: Herramientas → Preferencias → desmarca «Usar comillas tipográficas».
  • macOS: Ajustes del Sistema → Teclado → Entrada de texto → Editar → desactiva las comillas y rayas inteligentes.

No escribas código en un procesador de textos. La solución real es estructural. Cualquier cosa destinada a un analizador debería escribirse en un editor de texto plano, que nunca reescribirá tus caracteres.

Cuidado con la corrección excesiva. No reemplaces en bloque las comillas tipográficas en prosa. En un artículo o un correo, las comillas tipográficas son correctas y las rectas quedan peor. Normaliza en la frontera —cuando el texto pasa de un documento al código o a datos—, no en todas partes por defecto.

Si un archivo sigue fallando después de normalizar las comillas, el siguiente sospechoso es un carácter invisible; consulta la referencia de Unicode invisible.

Preguntas frecuentes

¿Por qué mi JSON dice unexpected token si parece correcto?

Casi siempre es una comilla tipográfica donde debería haber una recta. JSON exige exactamente U+0022, y las variantes tipográficas U+201C y U+201D son caracteres ordinarios para un analizador. La diferencia son solo unos píxeles en pantalla, por eso la línea parece correcta.

¿Cuál es la diferencia entre comillas tipográficas y rectas?

Son caracteres Unicode diferentes. Las comillas rectas son U+0022 y U+0027, los caracteres ASCII que todo analizador espera. Las tipográficas son U+2018, U+2019, U+201C y U+201D: signos tipográficos que se curvan hacia el texto, correctos en prosa e inválidos como delimitadores de cadenas.

¿Cómo convierto comillas tipográficas en rectas?

Pega el texto en un normalizador como Convertir comillas tipográficas a rectas, que sustituye las cuatro variantes tipográficas e informa del recuento. Hacerlo con buscar y reemplazar requiere cuatro pasadas separadas, una por carácter, por eso a menudo se hace de forma incompleta.

¿Por qué mi importación de CSV desplaza las columnas?

Un campo que contiene una coma solo está protegido si va entre comillas rectas. Las comillas tipográficas no son caracteres de comillas, así que el campo se divide en la coma y todas las columnas siguientes se desplazan. Falla en silencio, produciendo un archivo que se importa sin problemas y está mal.

¿Debería eliminar siempre las comillas tipográficas?

No. En prosa son tipografía correcta y quedan mejor que las rectas. Normaliza solo cuando el texto cruza hacia código, JSON, CSV, archivos de configuración o cualquier cosa que vaya a analizarse en lugar de leerse.

Herramientas mencionadas en esta guía

Guías relacionadas