Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Witam,
Debian Squeeze. Moim zdaniem locale pl_PL.utf-8 źle sortuje dane. Przykład:
echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL.utf-8 sort
daje wynik:
ą ć ł ż ź a b c z
natomiast:
echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL sort
daje poprawnie:
a ą b c ć ł z ź ż
Czy to jest OK? Według mnie w UTF-8 także sortowanie powinno być poprawnie zrealizowane.
Pozdrawiam,
Jakub
Offline
$ echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL.utf-8 sort a ą b c ć ł z ź ż
sort (GNU coreutils) 5.97
Offline
$ echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL.utf-8 sort a ą b c ć ł z ź ż
$ echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL sort a b c z ą ć ł ź ż
sort (GNU coreutils) 8.5
xD
Offline
sort --version sort (GNU coreutils) 8.5
To nie jest kwestia polecenia sort. To o coś innego innego chodzi. To samo "coś" powoduje, że postgresql źle sortuje - ma ustawione LC_COLLATE na pl_PL.UTF-8.
Tylko nie piszcie, że mam ustawić LC_COLLATE na pl_PL..
Dlaczego z UTF-8 sortuje się źle?
Offline
Przy ustawieniu LC_ALL ustawia także LC_COLLATE także u nas to działa. Najlepiej żeby sprawdził jeszcze ktoś, kto używa Squeeze'a
Offline
Heh, z Gentoo:
$ echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL sort a ą ć b c ł ź ż z
To dopiero hardcore. ;)
Offline
[quote=thalcave]Przy ustawieniu LC_ALL ustawia także LC_COLLATE także u nas to działa. Najlepiej żeby sprawdził jeszcze ktoś, kto używa Squeeze'a[/quote]
Tak, to oczywiste.
Nie ma to chyba większego znaczenia czy jak to u kogoś jeszcze na Squeeze działa.
U mnie nie działa i szukam przyczyny dlaczego?
Czy to jest kwestia jakichś słowników? Gdzie jest zapisany alfabet?
Ostatnio edytowany przez kubak (2011-05-06 20:14:57)
Offline
[quote=kubak]Nie ma to chyba większego znaczenia czy jak to u kogoś jeszcze na Squeeze działa.[/quote]
No właśnie to ma kluczowe znaczenie do stwierdzenia, czy błąd jest w Twoim systemie czy błąd jest w Squeeze jako takim. Od tego zależy, co z tym dalej zrobić.
Offline
[quote=Minio][quote=kubak]Nie ma to chyba większego znaczenia czy jak to u kogoś jeszcze na Squeeze działa.[/quote]
No właśnie to ma kluczowe znaczenie do stwierdzenia, czy błąd jest w Twoim systemie czy błąd jest w Squeeze jako takim. Od tego zależy, co z tym dalej zrobić.[/quote]
:-)
Mój system to Squeeze, jako taki.
Błąd jest więc w Squeeze, jako takim.
Czy Twoim zdaniem jeśli błąd występuję u jednej osoby, która ma Squeeze, to jest to błąd w jej systemie,
a jeśli u dwóch osób - to w "Squeeze jako takim"?
Poza tym widzisz powyżej kilka przypadków u których sortowanie także źle działa, w innych locele'ach.
Czegu tu jeszcze dochodzić?
Czy ktoś ma pomysł jak ten problem rozwiązać (problem sortowania w UTF8, nie powtarzalności błędu)?
Ostatnio edytowany przez kubak (2011-05-06 22:34:37)
Offline
[b]kubiak[/b] chcemy ustalić czy to jest błąd Twojego systemu (konfiguracji, braku jakiegoś pakietu, whatever) czy w Squeeze jest już ten błąd i występuje na każdej maszynie z nim zainstalowanym.
Właściciele Squeeze prosimy o sprawdzenie!
Offline
[quote=thalcave][b]kubiak[/b] chcemy ustalić czy to jest błąd Twojego systemu (konfiguracji, braku jakiegoś pakietu, whatever) czy w Squeeze jest już ten błąd i występuje na każdej maszynie z nim zainstalowanym.
Właściciele Squeeze prosimy o sprawdzenie![/quote]
Wiadomo przecież, że błąd nie musi występować na każdej maszynie, wystarczy, że ktoś nie ma zainstalowanego tego locale!
Widzę to tak: wykonuję polecenie sort, zgodnie ze specyfikacją tego polecania. Korzystam z niezmodyfikowanych bibliotek.
Otrzymuje zły wynik.
To wyczerpuje znamiona błędu.
Nawet jeśli występuje on tylko na moim jedynym komputerze na świecie.
Jest błąd i już.
Jak to naprawić?
Offline
Co sie dzieje jak ustawisz LANG na utf-8?
Offline
Cokolwiek bym nie robił ze zmienną LANG, jeśli LC_ALL jest na UTF8 to sortuje źle.
Sprawdziłem wszystkie przypadki.
Offline
pokaz wyniki polecen:
localedef --list-archive grep -v '^#' /etc/locale.gen dpkg -l locale md5sum /usr/share/i18n/locales/pl_PL
Offline
localedef --list-archive
en_US en_US.iso88591 en_US.utf8 pl_PL pl_PL.iso88592 pl_PL.utf8 polish
grep -v '^#' /etc/locale.gen
en_US.UTF-8 UTF-8 en_US ISO-8859-1 pl_PL ISO-8859-2 pl_PL.UTF-8 UTF-8
dpkg -l locale
Nie znaleziono pakietu pasującego do wzorca locale.
Podejrzewam, że chodziło Ci o
dpkg -l locales
Desired=Unknown/Install/Remove/Purge/Hold | Status=Not/Inst/Conf-files/Unpacked/halF-conf/Half-inst/trig-aWait/Trig-pend |/ Err?=(none)/Reinst-required (Status,Err: uppercase=bad) ||/ Nazwa Wersja Opis +++-==============-==============-============================================ ii locales 2.11.2-10 Embedded GNU C Library: National Language (l
md5sum /usr/share/i18n/locales/pl_PL
db3c19524b3f483c6b93bdef5f5bd331 /usr/share/i18n/locales/pl_PL
Offline
czy problem wystepuje gdy nie ma wygenerowanych pl_PL ISO-8859-2?
Offline
Sprawdziłem, niestety, to samo, a nawet jeszcze gorzej, bo wtedy nie sortuje nawet z LC_ALL=pl_PL
Offline
wyglada na jakis dziwny bug ... sprawdzalem na dwoch squeezach - jednym aktualizowanym z lenny drugim stawianym od podstaw i sortowanie w pl_PL.utf-8 dziala tak jak nalzey sie tego spodziewac ... ale mimo to sugerowalbym zgosic bug report do paczki locales ...
Offline
A możesz mi wrzucić tu swój env?
Szczególnie interesuje mnie LANG, LANGUAGE i MM_CHARSET.
Offline
marek@lapek:~$ echo -e "ą\na\nb\nc\nć\nł\nz\nż\nź" |LC_ALL=pl_PL sort a ą ć b c ł ź ż z
debian testing
Offline
rrp@baszta:~$ env BACNET_IFACE=eth0.119 TERM=xterm SHELL=/bin/bash LC_NUMERIC=C SSH_TTY=/dev/pts/0 USER=rrp MAIL=/var/mail/rrp PATH=/usr/sbin/:/sbin/:/usr/local/bin:/usr/bin:/bin:/usr/games LC_COLLATE=C PWD=/home/rrp LANG=en_US.UTF-8 SHLVL=1 HOME=/home/rrp LOGNAME=rrp LC_CTYPE=en_US.UTF-8 LC_TIME=en_DK.UTF-8 _=/usr/bin/env
Offline
Jezu, chyba mam to!
...
Tak, kwestia ustawienia PUTTY!!!!!
Window -> Tranlation -> Recevied data assumed to be in which character set: UTF-8
Następnie ustawiłem locale na pl_PL.UTF-8 i teraz sortowanie działa. Czyli to przez to, że komendę wklejałem przez putty, które coś robiło ze znakami takiego, że się sortowanie wysypywało.
Dzięki wszystkim za pomoc!
Offline
LOL... a Ty się dziwiłeś, że staramy sprawdzić czy n innym Squeeze problem występuje :D
Offline
Myśle ze jednak to nie wina putty tylko gdzies indziej, ja test robilem na laptopie i sortowanie jest bledne
Ostatnio edytowany przez kayo (2011-05-08 23:27:00)
Offline
To znaczy u mnie jest to wina putty. Ale Wasze testy powyżej mogą sugerować, że jest więcej problemów z sortowanie i locale.
Offline
Time (s) | Query |
---|---|
0.00010 | SET CHARSET latin2 |
0.00004 | SET NAMES latin2 |
0.00094 | SELECT u.*, g.*, o.logged FROM punbb_users AS u INNER JOIN punbb_groups AS g ON u.group_id=g.g_id LEFT JOIN punbb_online AS o ON o.ident='3.16.203.27' WHERE u.id=1 |
0.00063 | REPLACE INTO punbb_online (user_id, ident, logged) VALUES(1, '3.16.203.27', 1732966592) |
0.00052 | SELECT * FROM punbb_online WHERE logged<1732966292 |
0.00058 | DELETE FROM punbb_online WHERE ident='3.141.32.53' |
0.00064 | DELETE FROM punbb_online WHERE ident='66.249.69.8' |
0.00064 | SELECT t.subject, t.closed, t.num_replies, t.sticky, f.id AS forum_id, f.forum_name, f.moderators, fp.post_replies, 0 FROM punbb_topics AS t INNER JOIN punbb_forums AS f ON f.id=t.forum_id LEFT JOIN punbb_forum_perms AS fp ON (fp.forum_id=f.id AND fp.group_id=3) WHERE (fp.read_forum IS NULL OR fp.read_forum=1) AND t.id=18924 AND t.moved_to IS NULL |
0.00008 | SELECT search_for, replace_with FROM punbb_censoring |
0.00101 | SELECT u.email, u.title, u.url, u.location, u.use_avatar, u.signature, u.email_setting, u.num_posts, u.registered, u.admin_note, p.id, p.poster AS username, p.poster_id, p.poster_ip, p.poster_email, p.message, p.hide_smilies, p.posted, p.edited, p.edited_by, g.g_id, g.g_user_title, o.user_id AS is_online FROM punbb_posts AS p INNER JOIN punbb_users AS u ON u.id=p.poster_id INNER JOIN punbb_groups AS g ON g.g_id=u.group_id LEFT JOIN punbb_online AS o ON (o.user_id=u.id AND o.user_id!=1 AND o.idle=0) WHERE p.topic_id=18924 ORDER BY p.id LIMIT 0,25 |
0.00082 | UPDATE punbb_topics SET num_views=num_views+1 WHERE id=18924 |
Total query time: 0.006 s |