Entradas etiquetadas como ‘LATIN1’

Ignorar tildes en consultas con PostgreSQL

image

Pues hace tiempo ya…, se suscitó el problema que en los formularios de búsqueda del sistema no aparecían los resultados cuando escribías el nombre del cliente “Juan Apostol” , y esto era por que en la base de datos estaba registrado como “Juan Apóstol” ( Nótese esa pequeña cosa llamada “Tilde” arriba de la letra o ).

Para darle solución a este problema se modifico la consulta de búsqueda, de la siguiente forma:

Antes:

SELECT CAT_CLIENTES.NOMBRE LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC

Después:

SELECT TO_ASCII(CAT_CLIENTES.NOMBRE, ‘LATIN1’) LIKE ‘%"+variable+"%’ ORDER BY CAT_CLIENTES.NOMBRE ASC

Con la sencilla función TO_ASCII aplicada sobre el campo NOMBRE, tendrá el efecto de que los resultados traídos por la consulta no tomaran en cuenta si el registro tiene o no tilde.

Por lo que si ahora buscamos “Juan Apostol” nos traerá de resultado “Juan Apóstol” aunque no lo hallamos escrito con su acento correspondiente.

 

¿Necesitas otra opción?

http://romanmussi.blogspot.com/2009/12/busquedas-por-campos-de-texto-en.html

¿Necesitas ayuda con Oracle?

Aquí otra solución con Oracle. (via @ivonsue)

 

PD.-Gracias al amigo Rodre por buscar esta solución.

Anuncios

Cambiar la codificación de caracteres en Postgres

Apenas me sucedió que al estar trabajando un sistema con JSP y PostgreSQL (v8.3) al tratar de generar y guardar un registro que tuviera un carácter latino (para ser preciso un acento [´] ), provocaba el siguiente error:

carácter 0xc293 de codificación «UTF8» no tiene equivalente en «WIN1252»

Esto era debido a la codificación de mi base de datos (se encontraba en WIN1252) por lo que tenia que cambiarla a UTF8 o bien LATIN1, busque información en google donde encontré el siguiente link que fue de gran ayuda. Basándome en la explicación del link anterior explico como cambiar la codificación desde pgAdmin II (aunque debe ser igual desde línea de comandos) , los pasos son los siguientes:

1.- Conocer los tipos de datos soportados por PostgreSQL los encontramos en: http://www.postgresql.org/docs/8.0/interactive/multibyte.html

2.- Basándonos en la tabla ejecutar el siguiente comando en la consola SQL

   1: update pg_database set encoding=8 where datname='mibd';


 image

Donde encoding se refiere al tipo de codificación en este caso el “8” corresponde a LATIN1 y datname es el nombre de nuestra base de datos a la cual le queremos cambiar la codificación (en este caso nuestra base de datos se llama mibd).

Para identificar el tipo de encoding correspondiente a su numero entero he creado la siguiente tabla:

N° de encoding

Name

Descripción

0

SQL_ASCII

ASCII

1

EUC_JP

Japanese EUC

2

EUC_CN

Chinese EUC

3

EUC_KR

Korean EUC

4

JOHAB

Korean EUC (Hangle base)

5

EUC_TW

Taiwan EUC

6

UNICODE

Unicode (UTF-8)

7

MULE_INTERNAL

Mule internal code

8

LATIN1

ISO 8859-1/ECMA 94 (Latin alphabet no.1)

9

LATIN2

ISO 8859-2/ECMA 94 (Latin alphabet no.2)

10

LATIN3

ISO 8859-3/ECMA 94 (Latin alphabet no.3)

11

LATIN4

ISO 8859-4/ECMA 94 (Latin alphabet no.4)

12

LATIN5

ISO 8859-9/ECMA 128 (Latin alphabet no.5)

13

LATIN6

ISO 8859-10/ECMA 144 (Latin alphabet no.6)

14

LATIN7

ISO 8859-13 (Latin alphabet no.7)

15

LATIN8

ISO 8859-14 (Latin alphabet no.8)

16

LATIN9

ISO 8859-15 (Latin alphabet no.9)

17

LATIN10

ISO 8859-16/ASRO SR 14111 (Latin alphabet no.10)

18

ISO_8859_5

ISO 8859-5/ECMA 113 (Latin/Cyrillic)

19

ISO_8859_6

ISO 8859-6/ECMA 114 (Latin/Arabic)

20

ISO_8859_7

ISO 8859-7/ECMA 118 (Latin/Greek)

21

ISO_8859_8

ISO 8859-8/ECMA 121 (Latin/Hebrew)

22

KOI8

KOI8-R(U)

23

ALT

Windows CP866

24

WIN874

Windows CP874 (Thai)

25

WIN1250

Windows CP1250

26

WIN

Windows CP1251

27

WIN1256

Windows CP1256 (Arabic)

28

TCVN

TCVN-5712/Windows CP1258 (Vietnamese)

Con esta tabla sabremos que numero corresponde a que codificación siendo así, por ejemplo si quisiera cambiar la codificación de mi tabla a UTF-8 tendría el siguiente código:

   1: update pg_database set encoding=6 where datname='mibd';

 

Como pueden ver es muy sencillo espero sea de utilidad, como lo fue para mi ;).

-.-. Los comentaros son motivos para continuar con el blog .-.-

Update de utilidad: Configuración actual del sistema para no tener problemas con acentos(´) ni eñes (ñ):

PostgreSQL: LATIN1

image

Dreamweaver: charset=iso-8859-1

image

Nube de etiquetas