From: | Alvaro Herrera <alvherre(at)commandprompt(dot)com> |
---|---|
To: | Jose Maria Mencia Fernandez <jmencia(at)alimarket(dot)es> |
Cc: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: Codificación UTF8 |
Date: | 2006-06-20 13:32:35 |
Message-ID: | 20060620133234.GJ26882@surnet.cl |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
Jose Maria Mencia Fernandez escribió:
> Perdonen mi ignorancia en el mundo de los juegos de caracteres y su
> definición en un sistema Postgresql. Tengo una base de datos Postgresql
> en SO Debian creada con encoding=UTF8. Utilizo el cliente psql también
> en SO Debian, desde el cual crero y manipulo los objetos de la base de
> datos.
> Pues bien, al hacer un:
> COMMENT ON TABLE mitabla IS 'Cualquier palabra con tildes y eñes';
> me da el error siguiente:
> ERROR: se detect? una secuencia de bytes UTF-8 no v?lidos cerca del
> byte 0xf3
>
> Compruebo que server_encoding es UTF8 y que client_encoding es UTF8.
> He realizado la misma prueba con client_encoding = 'LATIN9' desde psql y
> añade el comentario en la tabla sin problemas.
Obvio :-)
> ¿Qué relación debe cumplirse entre el encoding del cliente y el del
> servidor? ¿No deben ser la misma?
No! La codificacion del servidor puede ser cualquier cosa. Sea LATIN1,
LATIN9, UTF-8, u otro. Lo unico que importa es que pueda almacenar los
caracteres que tu quieras ingresar. Tambien podria ser, por ej., SJIS,
pero probablemente eso no te serviria para almacenar ñ ni á ni ¿.
La codificacion del cliente debe ser la codificacion del cliente. En
este caso creo que seria el terminal (xterm o lo que sea). El terminal
esta configurado para emitir caracteres en una codificacion determinada
-- esa misma es la que debes indicarle a Postgres que use.
Basicamente en Postgres lo que sucede es que le dices al sistema "mi
cliente esta usando codificacion X". Entonces Postgres sabe que, dado
que tiene codificacion de servidor Y, para poder almacenar los datos
tiene que:
1. hacer reconversion de X a Y, si X != Y, o bien
2. dejar el string tal cual, si X = Y.
Capici?
--
Alvaro Herrera http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.
From | Date | Subject | |
---|---|---|---|
Next Message | Daniel Carrero | 2006-06-20 13:34:54 | Re: modelado de datos |
Previous Message | Mario Gonzalez | 2006-06-20 13:30:42 | Re: configurar postgres8.1en windowspoder conectarme atravez de internet |