0

Cuando la página se carga los caracteres que tienen acentos o la ñ se muestran de forma diferente, los datos los tengo en PostgreSQL y hago una consulta para mostrarlos en la página.

  • algodón se muestra cómo algod¢n
  • niño se muestra cómo ni^o

En el archivo jade sí tengo meta(charset="UTF-8"), y también en PostgreSQL tengo

  Nombre     |  Dueño   | Codificación |      Collate       |       Ctype        | 

tienda        | postgres | UTF8         | Spanish_Spain.1252 | Spanish_Spain.1252 |


Para solucionar intenté cambiar la codificación en dónde se envían los datos del servidor al cliente, pero no funciona.

res.charset='UTF-8';
   res.render('catalogo',{title: 'Catalogo',
    datos: data
    });

Si escribo caracteres con acentos o la ñ directamente el archivo jade sí se visualiza bien. ¿Qué puedo hacer para solucionar el problema?

FrEqDe
  • 3,516
  • 14
  • 42
  • 77
  • 1
    Ahí esbocé una respuesta genérica. Lo ideal es construir un pequeño ejemplo y subirlo en algún lado para que lo veamos. Que contenga un archivo.sql que crea la base, la tabla (con un solo campo) e inserta un registro. Un archivo.js que consulta la base y manda el valor al cliente. Otro archivo.js que lea el ajax y lo muestre (o si es directo solo el primer .js que crea la respuesta HTML). – Emilio Platzer May 28 '17 at 19:26
  • 1
    Revisa el encodaje, por niveles... [esta respuesta](https://es.stackoverflow.com/a/59510/29967) puede servirte. – A. Cedano May 29 '17 at 00:07
  • @A.Cedano, sí me sirvió el problema era al insertar los datos. – FrEqDe May 29 '17 at 01:14

1 Answers1

1

Tienes que poner UTF-8 por todos lados:

  1. Asegúrate que el código fuente está en UTF8 (o sea los .js) depende qué editor uses es la forma (tanto de los .js que van al navegador como los que uses en node.js).
  2. meta(charset="UTF-8") en el jade (o su equivalente en HTML)
  3. Lo que envíes desde el servidor que sea con res.setHeader('Content-Type', 'text/plain; charset=utf-8'); (o lo que sea que sea el content-type pero que vaya con utf-8).
  4. Revisa (con el pgAdmin) que se vean los acentos en lo que está en la base.
Emilio Platzer
  • 2,428
  • 1
  • 10
  • 32
  • Revisé con el pgAdmin y ahí me di cuenta que los caracteres no estaban correctos, lo que quiere decir que el problema estaba al insertar los datos por hacerlo desde la consola. Gracias ya pude solucionar el problema. – FrEqDe May 29 '17 at 01:11