Carcteres raros en aplicacin web

Buen da

Tengo una aplicacin web stand alone en xojo 2016 r1 y la base de datos es postgresql 9.6 sobre ubuntu, no podemos determinar cuando el usuario es capaz de ingresar caracteres raros como ? , la base datos los almacena sin problemas, pero la data esta sucia, luego al querer hacer una migracin de estos datos a un sistema desarrollado en Visual Fox, este no puede leer los datos de postgresql “UTF8 no tiene equivalencia en la codificacin WIN1252”.

Como evitar el ingreso de caracteres raros en la aplicacin web?

Prob con el siguiente cdigo en el evento Session.open sin resultados
pasaDB.SQLExecute(“set names ‘utf8’;”)

Antes de grabar almaceno el valor en una variable y luego mando a grabar pero cambia el valor de un carcter raro a “?” la data sigue sucia.
dim telefono As String = Txttelefono1.Text.ConvertEncoding(Encodings.WindowsANSI)

Esta corre en chrome en varios sistemas operativos windows desde XP a W10.

Gracias de antemano por la ayuda

Saludos
Mauricio

Hola Mauricio,

La codificacin entre la base de datos (definicin de las tablas) y la utilizada en tu app Web deben coincidir.
Si vas a utilizar los datos finalmente (o en la cadena de proceso) como WIN1252, entonces las tablas de PostgreSQL deben tener esta codificacin, adems de que debers de convertir la codificacin de la entrada del usuario a la misma.

Para evitar problemas de caracteres rarosestos no se limpian/evitan utilizando los PreparedStatements?

Javier

Hola Javier.

La base de datos y las tablas son utf8, mi necesidad es trabajar con este encoding y evitar caracteres raros o que no sean compatibles con WIN1252.

La aplicacin y la base de datos no presentan problemas al ingresar un carcter raro lo acepta y lo graba, sin embargo la data esta sucia y no puedo recuperar la informacin desde visual foxpro hasta que se limpie la data.

Que implicaciones tendra implementar en el session.open
DB.SQLExecute(“set names ‘utf8’;”)

En el caso que el usuario ingrese un carcter raro como lo detecto?
Como convertir la codificacin de la entrada del usuario a la misma (utf8)?

Saludos.
Mauricio

Si la tabla est estructurada como UTF8, entonces HAS de utilizar de principio a fin la misma codificacin.

Datos introducidos por el usuario -> a UTF8 (por omisin debera de ser esta)
Cuando grabas estos datos en la tabla -> UTF8
Cuando los recuperas desde la tabla -> UTF8

En la aplicacin de destino, puedes establecer la conversin desde lo obtenido desde la tabla a la nueva codificacin que desees

Si los caracteres del paso 1 ya estn contaminados puedes establecer un filtro para “eliminar” los que no desees Perdona, pero no entiendo muy bien cuando dices que si de entrada ya hay un carcter "raro"qu entendemos por raro? Qu debera esperar como entrada? Ah es donde tienes que aplicar el filtrado no conversiones de codificacin, entiendo.

Si la entrada proviene desde otra base de datos que emplee otra codificacin, entonces s que puedes convertirlos previamente desde la codificacin “origen” a “UTF8” -> a tabla UTF8.

No s si me explico (muy pocas horas de sueo hoy)

Javier