konverze utf8 do ascii

242 views
Skip to first unread message

barbucha

unread,
Sep 13, 2011, 7:09:23 AM9/13/11
to PostgreSQL-cz
Chtel jsem vyuzit Built-in konverzi utf8_to_ascii
http://www.postgresql.org/docs/9.0/static/functions-string.html#CONVERSION-NAMES
, ale asi nevim jak.

Zkousim
select utf8_to_ascii('žluťoučký řízek');
ERROR: function utf8_to_ascii(unknown) does not exist
LINE 1: select utf8_to_ascii('žluťoučký řízek');
^
HINT: No function matches the given name and argument types. You
might need to add explicit type casts.
select utf8_to_ascii

Provedl jsem:
CREATE DEFAULT CONVERSION utf8_to_ascii FOR 'UTF8' TO 'SQL_ASCII' FROM
utf8_to_ascii;
CREATE CONVERSION

Asi to delam uplne blbe, prosim o radu.
Dik


Mluvicí Hrášek

unread,
Sep 13, 2011, 7:16:39 AM9/13/11
to postgr...@googlegroups.com
to ma byt na odstraneni interpunkce?? Podle me tam chybeji nejaky argumenty..

ja pouzivam tuto

CREATE OR REPLACE FUNCTION to_ascii(bytea, name)
RETURNS text AS 'to_ascii_encname' LANGUAGE internal IMMUTABLE STRICT;

to_ascii(convert_to(nazev, 'latin2'),'latin2')

nekde sem to vyguglim, ale uz nedohledam kde, mam 8.4


2011/9/13 barbucha <janota...@gmail.com>


--
Tuto zprávu jste obdrželi, protože jste přihlášeni k odběru skupiny PostgreSQL-cz ve Skupinách Google.
Chcete-li přidat příspěvek do této skupiny, odešlete e-mail na adresu postgr...@googlegroups.com.
Chcete-li se odhlásit z této skupiny, pošlete e-mail na adresu postgresql-c...@googlegroups.com.
Další možnosti lze nastavit při návštěvě skupiny na stránce http://groups.google.com/group/postgresql-cz?hl=cs.


Martin Janota

unread,
Sep 13, 2011, 8:23:31 AM9/13/11
to postgr...@googlegroups.com
ano, odstraneni interpunkce
Zkousel jsem i funkco convert(bytea, 'encoding', 'encoding') a ta mi zas rvala, ze tam davam text a ne bytea.
Ma verze je take 8.4


Dne 13. září 2011 13:16 Mluvicí Hrášek <godzil...@gmail.com> napsal(a):

Pavel Stehule

unread,
Sep 13, 2011, 8:24:05 AM9/13/11
to postgr...@googlegroups.com
Zdravim

2011/9/13 barbucha <janota...@gmail.com>:


> Chtel jsem vyuzit Built-in konverzi utf8_to_ascii
> http://www.postgresql.org/docs/9.0/static/functions-string.html#CONVERSION-NAMES
> , ale asi nevim jak.
>
> Zkousim
> select utf8_to_ascii('žluťoučký řízek');
> ERROR:  function utf8_to_ascii(unknown) does not exist
> LINE 1: select utf8_to_ascii('žluťoučký řízek');
>               ^
> HINT:  No function matches the given name and argument types. You
> might need to add explicit type casts.
> select utf8_to_ascii
>

pokud si vzpominam, tak ta funkce se jmenuje unanccent a je v contribu

http://www.pgsql.cz/index.php/PostgreSQL_9.0_-_nov%C3%BD_za%C4%8D%C3%A1tek

Pavel Stehule

> Provedl jsem:
> CREATE DEFAULT CONVERSION utf8_to_ascii FOR 'UTF8' TO 'SQL_ASCII' FROM
> utf8_to_ascii;
> CREATE CONVERSION
>
> Asi to delam uplne blbe, prosim o radu.
> Dik
>
>

Mluvicí Hrášek

unread,
Sep 13, 2011, 8:26:46 AM9/13/11
to postgr...@googlegroups.com
no, tak, to by to, co sem psal melo chodit.

2011/9/13 Martin Janota <janota...@gmail.com>

Pavel Stehule

unread,
Sep 13, 2011, 8:28:10 AM9/13/11
to postgr...@googlegroups.com
Jeste, mozna predchozi mail neresil, to co chcete. U konverzi z UTF8
musite vybrat cilove kodovani jine nez ascii - napr. latin2

a mozna jeden tip

http://www.pgsql.cz/index.php/SQL_Triky_I.#Odstran.C4.9Bn.C3.AD_diakritiky

Pavel

2011/9/13 barbucha <janota...@gmail.com>:

Martin Janota

unread,
Sep 13, 2011, 9:08:43 AM9/13/11
to postgr...@googlegroups.com
Ano v odkazu je popsano to co poslal Hrasek.
Muj dotaz smeroval na vyuziti built-in konverze utf8_to_ascii, na co a jak se tato konverze uziva?

Zaroven jsem narazil na dalsi problem

SELECT count(*) FROM table WHERE lower(to_ascii(convert_to(person_lastname, 'LATIN2')::text,'LATIN2')) like '%' lower(to_ascii(convert_to('Hrášek','LATIN2')::text, 'LATIN2' ));

Nefunguje, ačkoli tam Hrášek je.


Ale pozor 

SELECT count(*) FROM table WHERE lower(to_ascii(convert_to(person_lastname, 'LATIN2')::text,'LATIN2')) = lower(to_ascii(convert_to('Hrášek','LATIN2')::text, 'LATIN2' ));

funguje.


Bohužel já potřebuji to like

Martin




Dne 13. září 2011 14:28 Pavel Stehule <pavel....@gmail.com> napsal(a):

Mluvicí Hrášek

unread,
Sep 13, 2011, 9:12:05 AM9/13/11
to postgr...@googlegroups.com
sem si rikal, kde sem to čmajznul, mohlo mě napadnout, že to mam vocaď

co znamená nefunguje? Nevrátí nic, nebo to kvičí??

2011/9/13 Martin Janota <janota...@gmail.com>

Mluvicí Hrášek

unread,
Sep 13, 2011, 9:13:43 AM9/13/11
to postgr...@googlegroups.com
co tohle??
SELECT count(*) FROM table WHERE lower(to_ascii(convert_to(person_lastname, 'LATIN2')::text,'LATIN2')) like lower(to_ascii(convert_to('%Hrášek%','LATIN2')::text, 'LATIN2' ));


2011/9/13 Mluvicí Hrášek <godzil...@gmail.com>

Martin Janota

unread,
Sep 13, 2011, 9:13:51 AM9/13/11
to postgr...@googlegroups.com
v prvem pripade vrati pocet 0, ve druhem spravne 1.

Dne 13. září 2011 15:12 Mluvicí Hrášek <godzil...@gmail.com> napsal(a):

Martin Janota

unread,
Sep 13, 2011, 9:16:40 AM9/13/11
to postgr...@googlegroups.com
Taky nefunguje.
Pokud tam dam napriklad jenom Hr
SELECT count(*) FROM table WHERE lower(to_ascii(convert_to(person_lastname, 'LATIN2')::text,'LATIN2')) like '%' lower(to_ascii(convert_to('Hr','LATIN2')::text, 'LATIN2' ));
tak je vysledek spravne.


Dne 13. září 2011 15:13 Mluvicí Hrášek <godzil...@gmail.com> napsal(a):

Mluvicí Hrášek

unread,
Sep 13, 2011, 9:18:42 AM9/13/11
to postgr...@googlegroups.com
chm a 'hrá' ????

2011/9/13 Martin Janota <janota...@gmail.com>

Martin Janota

unread,
Sep 13, 2011, 9:25:04 AM9/13/11
to postgr...@googlegroups.com
Ani Hrá, nefunguje vše co není ascii znak a tudíž se převede na kod (u á je to \341)


Dne 13. září 2011 15:18 Mluvicí Hrášek <godzil...@gmail.com> napsal(a):

Martin Janota

unread,
Sep 13, 2011, 9:35:07 AM9/13/11
to postgr...@googlegroups.com
Uz jsem nasel pricinu, nevim proc ale pretypovaval jsem vysledek funkce convert_to na text a tim se nahradila diakritika temi kody a pak to nefunguje jak ma.

Dne 13. září 2011 15:25 Martin Janota <janota...@gmail.com> napsal(a):

Martin Janota

unread,
Sep 13, 2011, 9:35:27 AM9/13/11
to postgr...@googlegroups.com
Coz ovsem neresi problem s like

Dne 13. září 2011 15:35 Martin Janota <janota...@gmail.com> napsal(a):
Reply all
Reply to author
Forward
0 new messages