Re: [pgbr-geral] problema com acentos no UTF8

2009-11-12 Por tôpico Osvaldo Kussama
2009/10/29 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/10/29 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 O que achei interessante é que a decomposição utilizada foi definida
 pelo próprio consórcio Unicode e dessa forma, creio eu, não existem
 chutes sobre os aspectos de acentuação considerados anteriormente
 nesta thread.

 Exato.  A idéia é que existe uma decomposição ‘canônica’ para cada
 caracter com sinal diacrítico e, portanto, sabendo‐se diferenciar o
 que é caracter do que é sinal diacrítico, basta remover estes últimos.



Leandro:

Voltando ao assunto.

Parece que Oleg Bartunov já tem a função unaccent nestes moldes. Veja
esta thread:
http://archives.postgresql.org/pgsql-hackers/2009-07/thrd5.php#00819

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-11-12 Por tôpico Leandro DUTRA
2009/11/12 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 2009/10/29 Leandro DUTRA leandro.gfc.du...@gmail.com:
 Exato.  A idéia é que existe uma decomposição ‘canônica’ para cada
 caracter com sinal diacrítico e, portanto, sabendo‐se diferenciar o
 que é caracter do que é sinal diacrítico, basta remover estes últimos.

 Parece que Oleg Bartunov já tem a função unaccent nestes moldes. Veja
 esta thread:
 http://archives.postgresql.org/pgsql-hackers/2009-07/thrd5.php#00819

Interessante, os comentários dele parecem indicar que pode haver algo
faltando no padrão Unicode.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-29 Por tôpico Leonardo Cezar
2009/10/27 Leonardo Cezar lhce...@gmail.com:

Homologando essa solulção de conversão de unicode para ascii me
deparei com um bug(?):

      name       | setting
 -+-
  client_encoding | UTF8
  server_encoding | UTF8

 SELECT to_ascii('ÁÉÍÓÚáéíóÉÓ£¤©');
 ^^
    to_ascii
 
  AEIOUaei EOL C
  ^^
Aquela tabela de tradução utilizada no núcleo do postgres não converte
meu ó e provavelmente não deve funcionar para outros caracteres.

Alguém tem idéia onde foi que eu errei??


Definição da função:

CREATE OR REPLACE FUNCTION public.to_ascii(IN a TEXT, OUT o TEXT)
   LANGUAGE PLPGSQL
AS
$public_to_ascii$
DECLARE
   -- baseado em src/backend/util/udt/ascii.c
   t TEXT :=  $$  cL Y  Ca  -R 'u .,  ?AAAC
NOxOYTBaaac no/oyty$$;
   i INTEGER := 1;
   text_ascii TEXT := ;
   range INTEGER := 160;
   z INTEGER := 0;
BEGIN
WHILE (i = length(a)) LOOP
   z := ascii(substr(a,i,1));
   IF z  128 THEN
   o := COALESCE(o,'') || substr(a,i,1);
   ELSIF z  range THEN
   o := COALESCE(o,'') || $$ $$;
   ELSE
   o := COALESCE(o,'') || substr(t,(z - range)+1,1) ;
   END IF;
   i := i + 1;
END LOOP;
RETURN;
END;
$public_to_ascii$;

-Leo
-- 
Leonardo Cezar
http://www.aslid.org.br
http://postgreslogia.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-29 Por tôpico Leandro DUTRA
2009/10/27 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 Dê uma olhada no Charlint [1]. Talvez seja o que está procurando:

De fato, o charlint trabalha decompondo os caracteres.  Depois tento
ver como o faz.

Agora, preciso descobrir como transformar seja o unac, seja o
charlint, numa função dentro do PostgreSQL — como a gente costuma
fazer com Business::BR::CNPJ ou Email::Valid, por exemplo.

Mas obrigado, já ajudou muito!


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-29 Por tôpico Osvaldo Kussama
2009/10/29 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/10/27 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 Dê uma olhada no Charlint [1]. Talvez seja o que está procurando:

 De fato, o charlint trabalha decompondo os caracteres.  Depois tento
 ver como o faz.

 Agora, preciso descobrir como transformar seja o unac, seja o
 charlint, numa função dentro do PostgreSQL — como a gente costuma
 fazer com Business::BR::CNPJ ou Email::Valid, por exemplo.

 Mas obrigado, já ajudou muito!



O que achei interessante é que a decomposição utilizada foi definida
pelo próprio consórcio Unicode e dessa forma, creio eu, não existem
chutes sobre os aspectos de acentuação considerados anteriormente
nesta thread.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-29 Por tôpico Tarcísio Sassara
É possível descobrir se uma palavra possui acentos usando uma expressão regular.

-- Tarcísio possui caracteres diferentes de [a-z 0-9]?
select 'Tarcísio' !~* '^([a-z 0-9])*$'
Retorna verdadeiro. A palavra possui um i com acento.

Comecei com uma função usando o translate como foi passado na lista só
que antes de retornar a string, passo pela ER que verifica o
resultado. Se o retorno for true gero uma exception.
Descubro manualmente o caracter que causou a falha e assim posso
ajustar a função para transformar este novo caracter.

CREATE OR REPLACE FUNCTION
padroniza(palavra text) RETURNS text AS $_$

DECLARE
  _palavra text;
BEGIN
  _palavra = translate(palavra,
'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ!...@#$%¨*()-_=+´`{[^~}]|¹²³£¢¬ªº°:?,.;/',
'aiiioAIIIOcC');

  IF _palavra !~* '^([a-z 0-9])*$' THEN
RAISE EXCEPTION 'a palavra % possui caracteres estranhos', _palavra;
  END IF;

  RETURN _palavra;
END;
$_$
LANGUAGE 'plpgsql' IMMUTABLE;

-- 
Tarcisio F. Sassara
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-29 Por tôpico Leandro DUTRA
2009/10/29 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 O que achei interessante é que a decomposição utilizada foi definida
 pelo próprio consórcio Unicode e dessa forma, creio eu, não existem
 chutes sobre os aspectos de acentuação considerados anteriormente
 nesta thread.

Exato.  A idéia é que existe uma decomposição ‘canônica’ para cada
caracter com sinal diacrítico e, portanto, sabendo‐se diferenciar o
que é caracter do que é sinal diacrítico, basta remover estes últimos.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Leandro DUTRA
2009/10/26 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 Acho bem complicada tal solução.

Complicada ou trabalhosa?


 Veja que para alguns dos encodings Latin-x existe a função to_ascii
 que transforma caracteres acentuados em não acentuados, mas para utf-8
 esta função não se aplica.

Porque seria apenas parcial, ou porque daria muito trabalho, ou…?


 A questão é: o que são caracteres acentuados em línguas diferentes
 daquelas representadas pelos latin-x (mas representadas no utf-8)?

Creio que cada língua teria de ter suas tabelas, e, na ausência,
retornar o caracter original ou dar erro.


 Será que existe nestas línguas algum tipo de correspondência
 acentuado - não acentuado?

Alguma sim, outras não… hebraico, por exemplo, tem, mas duvido que chines.


 Talvez algum linguista possa sugerir uma solução plausível.

Suspeito que seja mais trabalho de formiga que de linguista.



-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Leandro DUTRA
2009/10/26 Rodolfo rof20...@gmail.com:
 me responde uma coisa..ta tendo algum problema com acentuação onde ? na
 hora de inputar os dados na tabela ? ou em exibir em algum outro aplicativo ?

Na pesquisa, e ainda não sei se dá para alterar o aplicativo.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Leandro DUTRA
2009/10/26 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 existem soluções que utilizam os métodos existentes em linguagens como
 perl e python. Uma delas você pode ver em:
 http://wiki.postgresql.org/wiki/Strip_accents_from_strings

Muito bom, tem o potencial de ser algo mais genérico.


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Rodolfo
o resultado da pesquisa vai ser mostrado onde ? num browser(como mozilla,
internet explorer...) ou em outro aplicativo ?

2009/10/27 Leandro DUTRA leandro.gfc.du...@gmail.com

 2009/10/26 Rodolfo rof20...@gmail.com:
  me responde uma coisa..ta tendo algum problema com acentuação onde ?
 na
  hora de inputar os dados na tabela ? ou em exibir em algum outro
 aplicativo ?

 Na pesquisa, e ainda não sei se dá para alterar o aplicativo.


 --
 skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
 +55 (11) 3854 7191  gTalk: 
 xmpp:leand...@jabber.orgxmpp%3aleand...@jabber.org
 +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
 BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
 Sent from Sao Paulo, SP, Brazil
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico cleysson
se o resultado for mostrado em um browser vc pode tratar isso com um
método da linguagem utilizada!

Cleysson Lima
Desenvolvedor PHP
Tel: 61 8407 1875

Em 27/10/2009, Rodolfo rof20...@gmail.com escreveu:
 o resultado da pesquisa vai ser mostrado onde ? num browser(como mozilla,
 internet explorer...) ou em outro aplicativo ?
 
 2009/10/27 Leandro DUTRA leandro.gfc.du...@gmail.com
 
  2009/10/26 Rodolfo rof20...@gmail.com:
   me responde uma coisa..ta tendo algum problema com acentuação onde ?
  na
   hora de inputar os dados na tabela ? ou em exibir em algum outro
  aplicativo ?
 
  Na pesquisa, e ainda não sei se dá para alterar o aplicativo.
 
 
  --
  skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
  +55 (11) 3854 7191  gTalk: 
  xmpp:leand...@jabber.orgxmpp%3aleand...@jabber.org
  +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
  BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
  Sent from Sao Paulo, SP, Brazil
  ___
  pgbr-geral mailing list
  pgbr-geral@listas.postgresql.org.br
  https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
 
 
 
 
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Euler Taveira de Oliveira
Osvaldo Kussama escreveu:
 Só para complementar:
 existem soluções que utilizam os métodos existentes em linguagens como
 perl e python. Uma delas você pode ver em:
 http://wiki.postgresql.org/wiki/Strip_accents_from_strings
 
Existe solução em C também [1]. Neste caso ele gera uma tabela de mapeamento
utilizando o padrão Unicode. Assim, ele faz a conversão de MinhaCodificação
para UTF-16 (utilizando iconv), faz a busca na tabela, substitui os caracteres
encontrados e depois converte novamente para MinhaCodificação.

 PS. Nestes casos também não sei quais os critérios utilizados para
 línguas não contempladas nos encodings latin-x.
 
O critério é o padrão Unicode.

PS estavam perguntando por ti no PGCon Brasil 2009. ;)

[1] http://www.nongnu.org/unac/unac-man3.en.html


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Osvaldo Kussama
2009/10/27 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/10/26 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 Acho bem complicada tal solução.

 Complicada ou trabalhosa?

Para mim é complicada pois exige conhecimentos que não possuo e, imho,
não seria trivial obtê-los.




 Veja que para alguns dos encodings Latin-x existe a função to_ascii
 que transforma caracteres acentuados em não acentuados, mas para utf-8
 esta função não se aplica.

 Porque seria apenas parcial, ou porque daria muito trabalho, ou…?

Pela definição constante do manual:
http://www.postgresql.org/docs/current/interactive/functions-string.html
(only supports conversion from LATIN1, LATIN2, LATIN9, and WIN1250 encodings)




 A questão é: o que são caracteres acentuados em línguas diferentes
 daquelas representadas pelos latin-x (mas representadas no utf-8)?

 Creio que cada língua teria de ter suas tabelas, e, na ausência,
 retornar o caracter original ou dar erro.


 Será que existe nestas línguas algum tipo de correspondência
 acentuado - não acentuado?

 Alguma sim, outras não… hebraico, por exemplo, tem, mas duvido que chines.

Pois é, foge ao meu conhecimento.




 Talvez algum linguista possa sugerir uma solução plausível.

 Suspeito que seja mais trabalho de formiga que de linguista.



Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Osvaldo Kussama
2009/10/27 Euler Taveira de Oliveira eu...@timbira.com:
 Osvaldo Kussama escreveu:
 Só para complementar:
 existem soluções que utilizam os métodos existentes em linguagens como
 perl e python. Uma delas você pode ver em:
 http://wiki.postgresql.org/wiki/Strip_accents_from_strings

 Existe solução em C também [1]. Neste caso ele gera uma tabela de mapeamento
 utilizando o padrão Unicode. Assim, ele faz a conversão de MinhaCodificação
 para UTF-16 (utilizando iconv), faz a busca na tabela, substitui os caracteres
 encontrados e depois converte novamente para MinhaCodificação.

Muito interessante esta solução. É possível incorporá-la ao PostgreSQL
como uma função nativa?



 PS. Nestes casos também não sei quais os critérios utilizados para
 línguas não contempladas nos encodings latin-x.

 O critério é o padrão Unicode.

 PS estavam perguntando por ti no PGCon Brasil 2009. ;)

Pois é, infelizmente não pude ir mas acompanhei algumas coisas pela
internet e uma dessas foi o Lightning Talks onde, para minha surpresa,
ouvi meu nome ser citado.



 [1] http://www.nongnu.org/unac/unac-man3.en.html



Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Andre Fernandes
 
 
  A questão é: o que são caracteres acentuados em línguas diferentes
  daquelas representadas pelos latin-x (mas representadas no utf-8)?
 
  Creio que cada língua teria de ter suas tabelas, e, na ausência,
  retornar o caracter original ou dar erro.
 
 
  Será que existe nestas línguas algum tipo de correspondência
  acentuado - não acentuado?
 
  Alguma sim, outras não… hebraico, por exemplo, tem, mas duvido que
 chines.

 Pois é, foge ao meu conhecimento.


Como curiosidade, já que foi mencionado, em chinês não existem caracteres
acentuados, visto ser um idioma de ideogramas. Os mesmos não possuem
correspondência direta com um som, apenas com um significado. (chinês na
realidade são diversos idiomas, não apenas um, cada qual ininteligível para
o outro, mas todos com a mesma escrita. Assim quem fala Mandarim e quem fala
Cantonês somente consegue entender o outro se for de forma escrita, pois a
fala não tem nada semelhante.)
Assim, tirar acentos em chinês não faria sentido algum. Mas nesse caso,
bastaria retornar o próprio ideograma ao executar uma função que tire
acentos.

Imagino que haja outros idiomas com característica semelhante (infelizmente
o chinês é o único idioma que conheço baseado em ideogramas).

Mas o problema surge quando pensamos em sinais gráficos que em um idioma é
acento, em outro é marca de uma letra adicional do idioma. Não me recordo de
nenhum caso no momento (faz tempo que fiz linguistica), mas sei que existem
casos assim.

-- 
André de Camargo Fernandes
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Rodolfo
ja resolveram o problema do cara ? eu so fiz algumas perguntas...e até agora
nada de me responderemso quis ajudar..bom fica de pé as
perguntas sobre onde vai ser mostrado essas consultas (se aplicativo ou
algum browser).

2009/10/27 Andre Fernandes fernandes.an...@gmail.com


 
 
  A questão é: o que são caracteres acentuados em línguas diferentes
  daquelas representadas pelos latin-x (mas representadas no utf-8)?
 
  Creio que cada língua teria de ter suas tabelas, e, na ausência,
  retornar o caracter original ou dar erro.
 
 
  Será que existe nestas línguas algum tipo de correspondência
  acentuado - não acentuado?
 
  Alguma sim, outras não… hebraico, por exemplo, tem, mas duvido que
 chines.

 Pois é, foge ao meu conhecimento.


 Como curiosidade, já que foi mencionado, em chinês não existem caracteres
 acentuados, visto ser um idioma de ideogramas. Os mesmos não possuem
 correspondência direta com um som, apenas com um significado. (chinês na
 realidade são diversos idiomas, não apenas um, cada qual ininteligível para
 o outro, mas todos com a mesma escrita. Assim quem fala Mandarim e quem fala
 Cantonês somente consegue entender o outro se for de forma escrita, pois a
 fala não tem nada semelhante.)
 Assim, tirar acentos em chinês não faria sentido algum. Mas nesse caso,
 bastaria retornar o próprio ideograma ao executar uma função que tire
 acentos.

 Imagino que haja outros idiomas com característica semelhante (infelizmente
 o chinês é o único idioma que conheço baseado em ideogramas).

 Mas o problema surge quando pensamos em sinais gráficos que em um idioma é
 acento, em outro é marca de uma letra adicional do idioma. Não me recordo de
 nenhum caso no momento (faz tempo que fiz linguistica), mas sei que existem
 casos assim.

 --
 André de Camargo Fernandes



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Euler Taveira de Oliveira
Osvaldo Kussama escreveu:
 Muito interessante esta solução. É possível incorporá-la ao PostgreSQL
 como uma função nativa?
 
Acho pouco provável. unac não é portável AFAICK. :( Mas nada impede que alguém
faça a implementação e coloque no PGFoundry.

Além disso, a partir da 8.5 teremos um novo módulo do contrib unaccent que
remove acentos dos lexemas caso seja utilizado na configuração de busca
textual. Do mesmo modo que o unac, você precisa gerar as regras (aka
mapeamento) entre os caracteres.


-- 
  Euler Taveira de Oliveira
  http://www.timbira.com/
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Osvaldo Kussama
2009/10/27 Rodolfo rof20...@gmail.com:
 ja resolveram o problema do cara ? eu so fiz algumas perguntas...e até agora
 nada de me responderemso quis ajudar..bom fica de pé as
 perguntas sobre onde vai ser mostrado essas consultas (se aplicativo ou
 algum browser).


Apenas para não ficar sem resposta:
O que a função to_ascii [1] faz é remover os acentos dos caracteres,
assim uma consulta:
SELECT nome FROM tabela WHERE to_ascii(nome) ILIKE 'joao%';
poderia retornar:
joão
João
joao
JOAO
joaõ
JÕAO
etc

Acontece que esta função só é aplicável aos encodings LATIN1, LATIN2,
LATIN9 e WIN1250 mas o encoding que está se tornando padrão é o UTF-8.
A pergunta era como utilizar algo semelhante à função to_ascii com o
encoding UTF-8.

Osvaldo
[1] http://www.postgresql.org/docs/current/interactive/functions-string.html
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Celso
Não sei se é a melhor solução, mas eu criei uma function


CREATE OR REPLACE FUNCTION fc_ascii(character varying)
  RETURNS text AS
$BODY$
select translate($1, 'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ', 
'aiiioAIIIOcC');
$BODY$
  LANGUAGE 'sql';





- Original Message - 
From: Osvaldo Kussama osvaldo.kuss...@gmail.com
To: Comunidade PostgreSQL Brasileira pgbr-geral@listas.postgresql.org.br
Sent: Tuesday, October 27, 2009 5:55 PM
Subject: Re: [pgbr-geral] problema com acentos no UTF8


2009/10/27 Rodolfo rof20...@gmail.com:
 ja resolveram o problema do cara ? eu so fiz algumas perguntas...e até 
 agora
 nada de me responderemso quis ajudar..bom fica de pé as
 perguntas sobre onde vai ser mostrado essas consultas (se aplicativo ou
 algum browser).


Apenas para não ficar sem resposta:
O que a função to_ascii [1] faz é remover os acentos dos caracteres,
assim uma consulta:
SELECT nome FROM tabela WHERE to_ascii(nome) ILIKE 'joao%';
poderia retornar:
joão
João
joao
JOAO
joaõ
JÕAO
etc

Acontece que esta função só é aplicável aos encodings LATIN1, LATIN2,
LATIN9 e WIN1250 mas o encoding que está se tornando padrão é o UTF-8.
A pergunta era como utilizar algo semelhante à função to_ascii com o
encoding UTF-8.

Osvaldo
[1] http://www.postgresql.org/docs/current/interactive/functions-string.html
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral 

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Rodolfo
eu acho que não tem necessidade.se vc puder me dizer onde vai ser
mostrado essa consulta.acho que poderia dar alguma sugestão.

2009/10/27 Celso clorenzett...@gmail.com

 Não sei se é a melhor solução, mas eu criei uma function


 CREATE OR REPLACE FUNCTION fc_ascii(character varying)
  RETURNS text AS
 $BODY$
select translate($1, 'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
 'aiiioAIIIOcC');
 $BODY$
  LANGUAGE 'sql';





 - Original Message -
 From: Osvaldo Kussama osvaldo.kuss...@gmail.com
 To: Comunidade PostgreSQL Brasileira 
 pgbr-geral@listas.postgresql.org.br
 Sent: Tuesday, October 27, 2009 5:55 PM
 Subject: Re: [pgbr-geral] problema com acentos no UTF8


 2009/10/27 Rodolfo rof20...@gmail.com:
  ja resolveram o problema do cara ? eu so fiz algumas perguntas...e até
  agora
  nada de me responderemso quis ajudar..bom fica de pé as
  perguntas sobre onde vai ser mostrado essas consultas (se aplicativo ou
  algum browser).


 Apenas para não ficar sem resposta:
 O que a função to_ascii [1] faz é remover os acentos dos caracteres,
 assim uma consulta:
 SELECT nome FROM tabela WHERE to_ascii(nome) ILIKE 'joao%';
 poderia retornar:
 joão
 João
 joao
 JOAO
 joaõ
 JÕAO
 etc

 Acontece que esta função só é aplicável aos encodings LATIN1, LATIN2,
 LATIN9 e WIN1250 mas o encoding que está se tornando padrão é o UTF-8.
 A pergunta era como utilizar algo semelhante à função to_ascii com o
 encoding UTF-8.

 Osvaldo
 [1]
 http://www.postgresql.org/docs/current/interactive/functions-string.html
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Osvaldo Kussama
2009/10/27 Rodolfo rof20...@gmail.com:
 eu acho que não tem necessidade.se vc puder me dizer onde vai ser
 mostrado essa consulta.acho que poderia dar alguma sugestão.


Creio que você não está entendendo o problema.
O que vai ser mostrado é o resultado da consulta e o problema consiste
precisamente em como construir esta consulta de modo que o PostgreSQL
retorne a gama de resultados desejados.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Leandro DUTRA
2009/10/27 Euler Taveira de Oliveira eu...@timbira.com:
 Existe solução em C também [1].

Precisaria criar um programa a ser chamado, ou tem como criar uma
função SQL diretamente a partir das funções C?


 Neste caso ele gera uma tabela de mapeamento
 utilizando o padrão Unicode. Assim, ele faz a conversão de MinhaCodificação
 para UTF-16 (utilizando iconv), faz a busca na tabela, substitui os caracteres
 encontrados e depois converte novamente para MinhaCodificação.

Interessante, achei que fosse normalizar a entrada para o formato
canônico, a partir daí removendo os sinais diacríticos da seqüência de
caracteres antes de converter para o formato de entrada.

Aliás, o exemplo que a página de manual da unac dá parece isso:
converter æ em ae.


 O critério é o padrão Unicode.

Imagino que pela decomposição padrão de cada caracter (ou glifo)?


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Osvaldo Kussama
2009/10/27 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/10/27 Euler Taveira de Oliveira eu...@timbira.com:
 Existe solução em C também [1].

 Precisaria criar um programa a ser chamado, ou tem como criar uma
 função SQL diretamente a partir das funções C?


 Neste caso ele gera uma tabela de mapeamento
 utilizando o padrão Unicode. Assim, ele faz a conversão de MinhaCodificação
 para UTF-16 (utilizando iconv), faz a busca na tabela, substitui os 
 caracteres
 encontrados e depois converte novamente para MinhaCodificação.

 Interessante, achei que fosse normalizar a entrada para o formato
 canônico, a partir daí removendo os sinais diacríticos da seqüência de
 caracteres antes de converter para o formato de entrada.

 Aliás, o exemplo que a página de manual da unac dá parece isso:
 converter æ em ae.


 O critério é o padrão Unicode.

 Imagino que pela decomposição padrão de cada caracter (ou glifo)?



Lenadro:

Dê uma olhada no Charlint [1]. Talvez seja o que está procurando:
Charlint is a perl script that works as a simple filter. It uses
UTF-8 both for input and for output.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Leonardo Cezar
2009/10/27 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/10/27 Euler Taveira de Oliveira eu...@timbira.com:

 Precisaria criar um programa a ser chamado, ou tem como criar uma
 função SQL diretamente a partir das funções C?

Não precisa de funções C para se chegar neste resultado (vide estudo abaixo).

 Neste caso ele gera uma tabela de mapeamento
 utilizando o padrão Unicode. Assim, ele faz a conversão de MinhaCodificação
 para UTF-16 (utilizando iconv), faz a busca na tabela, substitui os 
 caracteres
 encontrados e depois converte novamente para MinhaCodificação.

Estranho, utilizei a tabela base para a codificação em LATIN1 e
funciona mesmo para Unicode. Esquecendo as questões de segurança, não
se trata apenas de implementação barata?

 O critério é o padrão Unicode.

 Imagino que pela decomposição padrão de cada caracter (ou glifo)?

Não acho que glifos tenham qualquer relação.

Os primeiros octetos do UTF-8 são reservados para caracteres de 7 bits
da antiga US-ASCII por questões de compatibilidade, então podemos
considerar que a seguinte implementação funciona em ambos esquemas:

CREATE OR REPLACE FUNCTION public.to_ascii(IN a TEXT, OUT o TEXT)
LANGUAGE PLPGSQL
AS
$public_to_ascii$
DECLARE
-- baseado em src/backend/util/udt/ascii.c
t TEXT :=  $$  cL Y  Ca  -R 'u .,  ?AAAC
NOxOYTBaaac no/oyty$$;
i INTEGER := 1;
text_ascii TEXT := ;
range INTEGER := 160;
z INTEGER := 0;
BEGIN
WHILE (i = length(a)) LOOP
z := ascii(substr(a,i,1));
IF z  128 THEN
o := COALESCE(o,'') || substr(a,i,1);
ELSIF z  range THEN
o := COALESCE(o,'') || $$ $$;
ELSE
o := COALESCE(o,'') || substr(t,(z - range)+1,1) ;
END IF;
i := i + 1;
END LOOP;
RETURN;
END;
$public_to_ascii$;

Considerando o esquema public precedendo o esquema pg_catalog no seu
search_patch vc tem uma solução que atende ambas codificações de forma
transparente.

Provavelmente existem representações de símbolos (glifos) não
compatíveis com a saída desejada e este poderia ser alterado na
variável t

postgres=# SELECT name,setting from pg_settings
 WHERE name LIKE '%encoding';
  name   | setting
-+-
 client_encoding | UTF8
 server_encoding | UTF8

SELECT to_ascii('ÁÉÍÓÚáéíóÉÓ£¤©');
to_ascii

 AEIOUaei EOL C

postgres=# SELECT pg_catalog.to_ascii('ÁÉÍÓÚáéíóÉÓ£¤©');
ERROR:  encoding conversion from UTF8 to ASCII not supported

Abraço!

-Leo
-- 
Leonardo Cezar
http://www.aslid.org.br
http://postgreslogia.wordpress.com
http://www.dextra.com.br/postgres
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-27 Por tôpico Rodolfo
é o seguinte.acho que vc não entendeu...vc pode atingir o resultado
desejado dependendo de ONDE ficará postado o resultado da consulta.deixa
eu dar um exemplo:

vc faz uma consulta pra imprimir a string rua de um cliente(digamos que seja
Cj. Rio Xingú).para ser mostrada no browser pela compilação de uma
pagina em PHP rodando pelo apache..se seu apache estiver configurado pra
exibir ISO-8859-1.mas sua consulta retorna caracteres em UTF-8 o que
será exibido sera uma string com falhas em acentuação... por isso quero
saber pra onde vai essa consulta..acho que me expressei melhor agora.
Porem falo isso pra ajudar o cara do topico aesó por issoespero que
vc comprenda agora

2009/10/27 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/10/27 Rodolfo rof20...@gmail.com:
  eu acho que não tem necessidade.se vc puder me dizer onde vai ser
  mostrado essa consulta.acho que poderia dar alguma sugestão.


 Creio que você não está entendendo o problema.
 O que vai ser mostrado é o resultado da consulta e o problema consiste
 precisamente em como construir esta consulta de modo que o PostgreSQL
 retorne a gama de resultados desejados.

 Osvaldo
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-26 Por tôpico Leandro DUTRA
2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
    SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
                        'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

Muito obrigado, quebrou um galho.

Pergunta idiota: qual seria a solução ideal, quero dizer, aquela que
deveria ser implantada no PostgreSQL 8.5 e ir para o padrão ISO
SQL:2010?


-- 
skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
+55 (11) 3854 7191  gTalk: xmpp:leand...@jabber.org
+55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
Sent from Sao Paulo, SP, Brazil
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-26 Por tôpico Osvaldo Kussama
2009/10/26 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
    SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
                        'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

 Muito obrigado, quebrou um galho.

 Pergunta idiota: qual seria a solução ideal, quero dizer, aquela que
 deveria ser implantada no PostgreSQL 8.5 e ir para o padrão ISO
 SQL:2010?



Olá Leandro,

Acho bem complicada tal solução.
Veja que para alguns dos encodings Latin-x existe a função to_ascii
que transforma caracteres acentuados em não acentuados, mas para utf-8
esta função não se aplica.

A questão é: o que são caracteres acentuados em línguas diferentes
daquelas representadas pelos latin-x (mas representadas no utf-8)?
Será que existe nestas línguas algum tipo de correspondência
acentuado - não acentuado?

Talvez algum linguista possa sugerir uma solução plausível.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-26 Por tôpico Rodolfo
me responde uma coisa..ta tendo algum problema com acentuação onde ? na
hora de inputar os dados na tabela ? ou em exibir em algum outro aplicativo
?

2009/10/26 Leandro DUTRA leandro.gfc.du...@gmail.com

 2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com:
  CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
 SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
 'aiiioAIIIOcC');
  $$
  LANGUAGE sql IMMUTABLE STRICT;
 
  Ficaria assim:
  SELECT nome FROM cliente WHERE sem_acento(nome) ilike
 sem_acento(‘joao%’);

 Muito obrigado, quebrou um galho.

 Pergunta idiota: qual seria a solução ideal, quero dizer, aquela que
 deveria ser implantada no PostgreSQL 8.5 e ir para o padrão ISO
 SQL:2010?


 --
 skype:leandro.gfc.dutra?chat  Yahoo!: ymsgr:sendIM?lgcdutra
 +55 (11) 3854 7191  gTalk: 
 xmpp:leand...@jabber.orgxmpp%3aleand...@jabber.org
 +55 (11) 9406 7191ICQ/AIM: aim:GoIM?screenname=61287803
 BRAZIL GMT-3  MSN: msnim:chat?contact=lean...@dutra.fastmail.fm
 Sent from Sao Paulo, SP, Brazil
 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral

___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-10-26 Por tôpico Osvaldo Kussama
2009/10/26 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 2009/10/26 Leandro DUTRA leandro.gfc.du...@gmail.com:
 2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com:
 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
    SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
                        'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

 Muito obrigado, quebrou um galho.

 Pergunta idiota: qual seria a solução ideal, quero dizer, aquela que
 deveria ser implantada no PostgreSQL 8.5 e ir para o padrão ISO
 SQL:2010?



 Olá Leandro,

 Acho bem complicada tal solução.
 Veja que para alguns dos encodings Latin-x existe a função to_ascii
 que transforma caracteres acentuados em não acentuados, mas para utf-8
 esta função não se aplica.

 A questão é: o que são caracteres acentuados em línguas diferentes
 daquelas representadas pelos latin-x (mas representadas no utf-8)?
 Será que existe nestas línguas algum tipo de correspondência
 acentuado - não acentuado?

 Talvez algum linguista possa sugerir uma solução plausível.




Só para complementar:
existem soluções que utilizam os métodos existentes em linguagens como
perl e python. Uma delas você pode ver em:
http://wiki.postgresql.org/wiki/Strip_accents_from_strings

Osvaldo
PS. Nestes casos também não sei quais os critérios utilizados para
línguas não contempladas nos encodings latin-x.
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-06-03 Por tôpico Osvaldo Kussama
2009/6/3 Leandro Müller leandr...@muriki.com.br:

 Sou novo nesta lista, nesses últimos meses estou migrando uma base de dados
 de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou muito
 lento devido a complexidade de relatórios e diversos recursos que precisamos
 agora.

Seja bem vindo!



 Bom o único problema que tivemos com o banco de dados é quanto a pesquisa
 com ilike em palavras com acentos.

 Exemplo:

 Select nome from cliente where nome ilike ‘joao%’;

 O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse banco
 esta na codificação UTF8

Sim João é diferente de Joao e também diferente de joão, JOÃO e joao.



 Tentei criar um banco como latin1 porem o post não aceita criar.

Você não pode mudar mas ele aceita criar (vide initdb) mas tem que ser
compatível com o locale de seu S.O.



 Alguém tem idéia de que tipo configuração devo fazer para fazer pesquisas
 com acento?


Quando o encoding é LATIN1, LATIN2, LATIN9 ou WIN1250 podemos usar a
função to_ascii:
http://www.postgresql.org/docs/current/interactive/functions-string.html

Quando se utiliza o UTF8 o pessoal tem utilizado uma função de
conversão como esta:

CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aiiioAIIIOcC');
$$
LANGUAGE sql IMMUTABLE STRICT;

Ficaria assim:
SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

Caso faça uso intensivo desta query considere a criação de um índice
funcional para melhorar a performance.

Osvaldo
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-06-03 Por tôpico Nilson Chagas
Mas para isto o banco não tem que estar com Latin ou Unicode??? (sou leigo
no assunto)



-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico
http://tempodesalvacao.blogspot.com/
http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico


2009/6/3 josemario rosa josemario.r...@ibest.com.br

 cara isto e uma lacuna a ser preenchida no postgre. ja tive este problema e
 nao tem como resolver eu achoatt
 mario

 2009/6/3 Leandro Müller leandr...@muriki.com.br

  Ola turma.



 Sou novo nesta lista, nesses últimos meses estou migrando uma base de
 dados de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou
 muito lento devido a complexidade de relatórios e diversos recursos que
 precisamos agora.



 Bom o único problema que tivemos com o banco de dados é quanto a pesquisa
 com ilike em palavras com acentos.

 Exemplo:



 Select nome from cliente where nome ilike ‘joao%’;



 O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse banco
 esta na codificação UTF8



 Tentei criar um banco como latin1 porem o post não aceita criar.



 Alguém tem idéia de que tipo configuração devo fazer para fazer pesquisas
 com acento?



 Agradeço.



 *At.*



 *Leandro Müller*

 *Analista de Sistemas ***



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-06-03 Por tôpico Nilson Chagas
2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/6/3 Leandro Müller leandr...@muriki.com.br:
 
  Sou novo nesta lista, nesses últimos meses estou migrando uma base de
 dados
  de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou
 muito
  lento devido a complexidade de relatórios e diversos recursos que
 precisamos
  agora.

 Seja bem vindo!


 
  Bom o único problema que tivemos com o banco de dados é quanto a pesquisa
  com ilike em palavras com acentos.
 
  Exemplo:
 
  Select nome from cliente where nome ilike ‘joao%’;
 
  O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse
 banco
  esta na codificação UTF8

 Sim João é diferente de Joao e também diferente de joão, JOÃO e joao.


 
  Tentei criar um banco como latin1 porem o post não aceita criar.

 Você não pode mudar mas ele aceita criar (vide initdb) mas tem que ser
 compatível com o locale de seu S.O.


 
  Alguém tem idéia de que tipo configuração devo fazer para fazer pesquisas
  com acento?
 

 Quando o encoding é LATIN1, LATIN2, LATIN9 ou WIN1250 podemos usar a
 função to_ascii:
 http://www.postgresql.org/docs/current/interactive/functions-string.html

 Quando se utiliza o UTF8 o pessoal tem utilizado uma função de
 conversão como esta:

 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

 Caso faça uso intensivo desta query considere a criação de um índice
 funcional para melhorar a performance.

 Osvaldo


O Hostmaster, criou o banco do site que estou trabalhando com Latin1 (versão
8.2.7).
E lá utilizo o indice e pesquisa como lower(to_ascii(campo))  e consigo
pesquisar de tudo que é jeito.

A algum problema com o metodo utilizado???
-- 
[]s
Nilson Chagas - Ubuntu User 25794
---
Visite:
http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico
http://tempodesalvacao.blogspot.com/
http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico
___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


Re: [pgbr-geral] problema com acentos no UTF8

2009-06-03 Por tôpico Luigi Castro Cardeles
latin1 não é uma codificação muito boa...
O Osvaldo postou isso no passado (tem várias threads sobre isso, peguei uma
mais recente e com mais links).

Copiando o que o Osvaldo escreveu:

(...)
O histórico tem diversas threads sobre isso.
Creio que você deva ler este post do Roberto Mello:
http://blog.divisiblebyfour.org/search/label/encoding
(bem como o artigo do Joel Spolsky que ele cita).

Estas threads (dentre outras) falam sobre isso:
http://www.nabble.com/encoding-to9394266.html#a9400650
http://www.nabble.com/Qual-o-melhor-Encode-para-o-Brasil--td15857951.html#a15857951
http://www.nabble.com/Ainda-sobre-Latin1-no-8.3-td15913717.html#a15923070
(...)

 http://www.nabble.com/Ainda-sobre-Latin1-no-8.3-td15913717.html#a15923070
[]'s
Luigi Castro Cardeles


2009/6/3 Nilson Chagas nilson.chagas.si...@gmail.com

 2009/6/3 Osvaldo Kussama osvaldo.kuss...@gmail.com

 2009/6/3 Leandro Müller leandr...@muriki.com.br:
 
  Sou novo nesta lista, nesses últimos meses estou migrando uma base de
 dados
  de 4gb para postgresql 8.3.7, utilizávamos mysql na empresa, mas ficou
 muito
  lento devido a complexidade de relatórios e diversos recursos que
 precisamos
  agora.

 Seja bem vindo!


 
  Bom o único problema que tivemos com o banco de dados é quanto a
 pesquisa
  com ilike em palavras com acentos.
 
  Exemplo:
 
  Select nome from cliente where nome ilike ‘joao%’;
 
  O João não lista, fiz testes com a versão 8.4 e o mesmo ocorre, esse
 banco
  esta na codificação UTF8

 Sim João é diferente de Joao e também diferente de joão, JOÃO e joao.


 
  Tentei criar um banco como latin1 porem o post não aceita criar.

 Você não pode mudar mas ele aceita criar (vide initdb) mas tem que ser
 compatível com o locale de seu S.O.


 
  Alguém tem idéia de que tipo configuração devo fazer para fazer
 pesquisas
  com acento?
 

 Quando o encoding é LATIN1, LATIN2, LATIN9 ou WIN1250 podemos usar a
 função to_ascii:
 http://www.postgresql.org/docs/current/interactive/functions-string.html

 Quando se utiliza o UTF8 o pessoal tem utilizado uma função de
 conversão como esta:

 CREATE FUNCTION sem_acento(text) RETURNS text  AS $$
SELECT translate($1,'áàâãäéèêëíìïóòôõöúùûüÁÀÂÃÄÉÈÊËÍÌÏÓÒÔÕÖÚÙÛÜçÇ',
'aiiioAIIIOcC');
 $$
 LANGUAGE sql IMMUTABLE STRICT;

 Ficaria assim:
 SELECT nome FROM cliente WHERE sem_acento(nome) ilike sem_acento(‘joao%’);

 Caso faça uso intensivo desta query considere a criação de um índice
 funcional para melhorar a performance.

 Osvaldo


 O Hostmaster, criou o banco do site que estou trabalhando com Latin1
 (versão 8.2.7).
 E lá utilizo o indice e pesquisa como lower(to_ascii(campo))  e consigo
 pesquisar de tudo que é jeito.

 A algum problema com o metodo utilizado???
 --
 []s
 Nilson Chagas - Ubuntu User 25794
 ---
 Visite:
 http://www.amados.com.br/podcast - Peça gratuitamente um curso Bíblico
 http://tempodesalvacao.blogspot.com/
 http://bbnradio.org/ - Ouça a rádio e faça gratuitamente um Curso Biblico



 ___
 pgbr-geral mailing list
 pgbr-geral@listas.postgresql.org.br
 https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral


___
pgbr-geral mailing list
pgbr-geral@listas.postgresql.org.br
https://listas.postgresql.org.br/cgi-bin/mailman/listinfo/pgbr-geral