Hola,
Una pregunta un poco vieja, pero que valores de locales recomiendan para las bases y clientes?
Actualmente, consultando por sysdbslocale, todas nuestras bases estan creadas en el motor de producción con en_US.819 que creo es el default.
Al exportarlas note que tenemos problemas con acentos y ñ, lo cual es logico para lo cual deberia utilizar iso-8859 no?
Este es un ejemplo de export:
Amplio con un ejemplo
Leyendo un SP cualquiera, viendo el procbody veo esto:
-- Borra la tabla temporal
BEGIN
-- Si no existía, continúa
ON EXCEPTION IN (-206)
END EXCEPTION WITH RESUME ;
-- Borra la tabla temporal
DROP TABLE tmp_dw;
END
RAISE EXCEPTION SQLErr, ISAMError, error
Luego, viendo el dbexport tengo:
-- Borra la tabla temporal
BEGIN
-- Si no exist continò¡Š
ON EXCEPTION IN (-206)
END EXCEPTION WITH RESUME ;
-- Borra la tabla temporal
DROP TABLE tmp_dw;
END
RAISE EXCEPTION SQLErr, ISAMError, errorInfo;
Tengo informix en un ubuntu seteado con el mismo locale
dbs_dbsname base_test
dbs_collate en_US.819
Y cuando hago un export, veo bien los caracteres acentuados en los archivos generados. Vos lo tenes en linux ? podes ver bien un caracter acentuado en un archivo de texto ?
Ahora con el utf8 también está bien, porque soporta perfectamente español (de hecho unifica todos los códigos de página)
El tema es que cuando hablamos de códigos de páginas hay que ver:
a. El código de página de la base de datos
b. El código de página del SO del cliente
c. El código de página del SO del servidor en que está el SGBD (esto no nos interesa a nosotros pero si al SGBD)
Nota: El código de página del SO de tu PC cuando estás ejecutando una consulta estilo “INSERT INTO tabla(x,y,z) VALUES (‘ñandú’,123,NULL)” desde el sqlEditor entra en el punto “b” anterior.
En cuanto a la última pregunta:
El cliente de conexión informix te deja indicar distintos code pages para los puntos “a” y “b” y se encarga él solito de convertir de uno a otro según sea necesario.
Fijate en el setnet32 que las opciones DB_LOCALE y CLIENT_LOCALE estén correctas.
En db_locale debe ir el code page que tenga tu base de datos y en client_locale debe ir el code page del windows (este último podría variar entre los distintos clientes).
Finalmente comentar que cuando se exportan datos, el texto se exporta en el db_locale de la base de datos… así que ver bien o mal desde un editor a dicho texto dependerá de que tu editor entienda ese code page y/o pueda convertirlo al code page de tu Windows.