[SOLUCIONADO] resolver ñ y acento

quiero saber si hay una forma de codificacion aparte de la html en el codigo de resolver los acetos y las ñ???
muchas gracias

ya lo solucione, cambiando en el postgres la codificacion

http://softpress.eoden.es/?p=13

El cambio es muy simple: primero cambiamos al usuario postgres:
su – postgres
Entramos al Postgresql:
psql template1 postgres
Ahora veamos cual es la codificación actual de las base de datos que tenemos un nuestro servidor digitando lo siguiente:
\l
Debe salir algo similar a lo siguiente:
template1=# \l
Listado de base de datos
Nombre | Dueño | Codificación
———–+———-+————–
PRUEBA | postgres | UTF8
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8
(4 filas)
Ahora vamos a cambiar el encoder a la Base de Datos PRUEBA, para lo cual vamos a digitar lo siguiente:
update pg_database set encoding=8 where datname=’PRUEBA’;
Ahora volvemos a listar las Base de Datos digitando: \l y debe aparecer algo similar a:
Listado de base de datos
Nombre | Dueño | Codificación
———–+———-+————–
PRUEBA | postgres | LATIN1
postgres | postgres | UTF8
template0 | postgres | UTF8
template1 | postgres | UTF8

Hola Fernando,

si bien dicho metodo funciona, lo ideal seria que el encoding de todo el cluster fuera el mismo. Recorda que eso lo podes definir con initdb -E, si bien en algun encoding puede no ser compatible con el del sistema operativo y por ello te pare el comando de ultima lo que podrias hacer es dejarlo plano usando SQL_ASCII. El cuidado que debes tener aca es que siempre que te conectes al motor lo hagas con un client encoding igual, en el caso de toba siempre se intenta conectar con LATIN1.

Saludos

Hay alguna otra manera de resolver esto sin tener que cambiar el enconding? Valeria

Hola Valeria,

si tenes el cluster en UTF-8 por el momento no, debido a que PHP no tiene soporte oficial para el mismo y por ello trabajamos con LATIN1, el problema es que encima es incompatible por lo que la creacion de la base con encoding LATIN1 en un cluster UTF-8 falla.

Hay formas menos intrusivas para asegurarse el encoding de una base, de hecho en la creacion de la misma podes seleccionar un encoding distinto al del cluster, en ese caso tambien vas a tener que especificar los parametros de locale, el tema es que solo esta disponible a partir de Postgres 8.4, en versiones anteriores depende del cluster, lo que este configurado en postgresql.conf, o de el garfio que describe Fernando.

Por eso la recomendacion en principio es inicializar el cluster en LATIN1 o SQL_ASCII, en su defecto buscar una manera alternativa de tener una base en LATIN1.
Si ya tenes datos cargados, lo unico que se me ocurre es algun proceso de conversion… que seguramente incluya una revision manual en algun paso.

Saludos

Bueno, muchas gracias. En realidad tengo la base en windows2003. Y el sistema en Power Builder…no le puedo cambiar el encoding porque me rompería otra parte del sistema. Quería hacer una parte en toba.

De cualquier modo te agradezco por tu respuesta. Valeria

Hola Valeria,

corresponde que haga un mea culpa ya que charlando con otros compañeros, me hicieron notar que fijando el encoding de cliente, Postgres se encarga de hacer la conversion automaticamente.

Por tanto es posible que tengas una base en UTF-8 y no tengas drama, siempre y cuando toda interaccion que realices con la base, la realices manteniendo el mismo encoding para el cliente.

A partir de la version 1.4 de Toba el encoding se define en el archivo bases.ini para cada una de las fuentes de datos, por tanto una vez definido ahi todo acceso que se haga por medio de toba siempre tendra el mismo encoding para el cliente.

Pido disculpas a todos los que se tomaron la molestia de cambiar el encoding por sugerencia mia, no me maten :D.
Voy a hacer un tema fijo para explicarlo bien asi no me sigo mandando macanas.

Saludos

Yo tengo definido en el archivo bases.ini el encoding = UTF8, y toba versión 1.5.0, pero a los acentos los veo mal, y no me permite guardar nada que tenga acento.

Estoy recién aprendiendo a programar en toba, pero creo que es esto lo que me decías que tengo que tener configurado, no?

Valeria

Hola

No todas las conversiones son posibles, es mas, son relativamente pocas.
Por ej. si tenes un servidor en WIN1258 las conversiones por defecto son con clientes con WIN1258 ó UTF8

http://www.postgresql.org/docs/8.4/interactive/multibyte.html

Hola Emilio! Entonces con un servidor en Windows lo más probable es que no pueda hacer esta conversión, no?
Valeria

depende de cual es el encoding de la base de datos. Si tenés una base utf-8 y en el cliente ponés LATIN1 debería traducirlo sin problemas.
yo tengo todo en windows y no tengo problemas.

Anduvo! Yo tenía en el archivo bases.ini el encoding = UTF8, lo cambié por LATIN1 y funciona!
Muchas gracias! un saludo! Valeria