Re: [pgbr-geral] problema com acentos no UTF8
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 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/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/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 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
É 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 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/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/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/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
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
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
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 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 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
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
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
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 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
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
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 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 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 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 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
é 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/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 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
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 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/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
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/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
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