Date: Sat, 22 Dec 2007 19:09:10 +0200 From: Ismail YENIGUL <ismail@EnderUNIX.org> To: Ivan Voras <ivoras@freebsd.org> Cc: freebsd-database@freebsd.org, freebsd-questions@freebsd.org Subject: Re[2]: Turkish character sorting on PostgreSQL Message-ID: <879443695.20071222190910@EnderUNIX.org> In-Reply-To: <fkdh2i$vsu$1@ger.gmane.org> References: <1605513356.20071219221424@EnderUNIX.org> <fkdh2i$vsu$1@ger.gmane.org>
next in thread | previous in thread | raw e-mail | index | archive | help
Hello Ivan, Here is the test result. It seems that the problem is on FreeBSD (6.2) . Because =C3=B6 and =C5=9F are before then z in Turkish alphabet. # cat a.c #include <locale.h> int main() { setlocale(LC_COLLATE, "tr_TR.ISO8859-9"); printf("%d\n",strcoll("=C3=B6", "z")); printf("%d\n",strcoll("=C3=BC", "z")); } ftpfreebsd[~]# ./a 124 130 ftpfreebsd[~]#=20 By the way, LC_COLLATE is link to the ../la_LN.US-ASCII/LC_COLLATE in /usr/share/locale/tr_TR.ISO8859-9 directory. Does this mean that LC_COLLATE is missing for tr_TR.ISO8859-9 ? # ls -al /usr/share/locale/tr_TR.ISO8859-9/ total 14 drwxr-xr-x 2 root wheel 512 Jul 9 15:32 . drwxr-xr-x 157 root wheel 4096 Dec 4 2006 .. lrwxr-xr-x 1 root wheel 28 Jul 9 15:32 LC_COLLATE -> ../la_LN.US-AS= CII/LC_COLLATE lrwxr-xr-x 1 root wheel 26 Jul 9 15:32 LC_CTYPE -> ../la_LN.US-ASCI= I/LC_CTYPE -r--r--r-- 1 root wheel 18 Jul 9 15:32 LC_MESSAGES -r--r--r-- 1 root wheel 34 Jul 9 15:32 LC_MONETARY -r--r--r-- 1 root wheel 8 Jul 9 15:32 LC_NUMERIC -r--r--r-- 1 root wheel 352 Jul 9 15:32 LC_TIME and there is no file spesicific to the tr_TR.ISO8859-9 in /usr/src/share= /colldef/ # ls /usr/src/share/colldef/ Makefile el_GR.ISO8859-7.src la_LN.ISO8859-15.src map= .ISO8859-1 ru_RU.CP1251.src README en_DK.example la_LN.ISO8859-2.src map= .ISO8859-13 ru_RU.CP866.src be_BY.CP1131.src es_ES.ISO8859-1.src la_LN.ISO8859-4.src map= .ISO8859-15 ru_RU.ISO8859-5.src be_BY.CP1251.src es_ES.ISO8859-15.src la_LN.US-ASCII.src map= .ISO8859-2 ru_RU.KOI8-R.src be_BY.ISO8859-5.src et_EE.ISO8859-15.src lt_LT.ISO8859-13.src map= .ISO8859-4 sl_SI.ISO8859-2.src bg_BG.CP1251.src hi_IN.ISCII-DEV.src lt_LT.ISO8859-4.src map= .ISO8859-5 sr_YU.ISO8859-5.src ca_ES.ISO8859-1.src hy_AM.ARMSCII-8.src map.ARMSCII-8 map= .ISO8859-7 sv_SE.ISO8859-1.src ca_ES.ISO8859-15.src is_IS.ISO8859-1.src map.CP1131 map= .KOI8-R sv_SE.ISO8859-15.src cs_CZ.ISO8859-2.src is_IS.ISO8859-15.src map.CP1251 map= .KOI8-U uk_UA.CP1251.src de_DE.ISO8859-1.src kk_KZ.PT154.src map.CP866 map= .PT154 uk_UA.ISO8859-5.src de_DE.ISO8859-15.src la_LN.ISO8859-1.src map.ISCII-DEV pl_= PL.ISO8859-2.src uk_UA.KOI8-U.src Thursday, December 20, 2007, 12:44:34 PM, you wrote: > Ismail YENIGUL wrote: >> Hello, >>=20 >> I am using PostgreSQL 8.2.5 on FreeBSD 6.2. But I have a problem with >> sorting Turkish characters. They are listed after "z" character. >> I initialized the PostgreSQL with the following values: >>=20 >> initdb -E UNICODE --locale=3Dtr_TR.UTF-8 and > Unicode (UTF-8) collations (sorting) don't work on FreeBSD. You can use > PostgreSQL 8.1 and the "ICU" patch for it. >> initdb -E LATIN5 --locale tr_TR.ISO8859-9 > This could work, if the locale is properly defined in the system locale > database. Try creating a small C program that sorts your strings using > strcoll() to verify this - if the small C program works, it's a > PostgreSQL problem. --=20 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + http://www.enderunix.org/ismail http://www.endersys.com.tr + + EnderUNIX SDT @ Tr Endersys Consultancy Ltd. + + ismail ~ enderunix.org ismail.yenigul ~ endersys.com.tr + + Volunteer, Core Team Member Project Manager + +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ TCP/IP ve A=C4=9F g=C3=BCvenli=C4=9Fi kitab=C4=B1n=C4=B1n 2. bask=C4=B1s=C4= =B1 =C3=A7=C4=B1kt=C4=B1! http://dukkan.acikakademi.com
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?879443695.20071222190910>