Thread View: pl.comp.lang.ruby
4 messages
4 total messages
Started by TomekB
Wed, 13 Sep 2006 18:48
Polskie znaki i sortowanie
Author: TomekB
Date: Wed, 13 Sep 2006 18:48
Date: Wed, 13 Sep 2006 18:48
9 lines
925 bytes
925 bytes
Witam! W jaki sposób zmusić Ruby do posortowania tablicy stringów z uwzględnieniem polskich liter zakodowanych w iso-8859-2? Podobnie jest z metodami upcase/downcase i podobnymi. pozdrawiam -- Tomek
Re: Polskie znaki i sortowanie
Author: Jaroslaw Zabiello
Date: Thu, 14 Sep 2006 07:51
Date: Thu, 14 Sep 2006 07:51
11 lines
1109 bytes
1109 bytes
Dnia Wed, 13 Sep 2006 20:48:23 +0200, TomekB napisał(a): > W jaki sposób zmusić Ruby do posortowania tablicy stringów z > uwzględnieniem polskich liter zakodowanych w iso-8859-2? Podobnie jest z > metodami upcase/downcase i podobnymi. Spróbuj ustawić locale na latin2. -- Jarosław Zabiełło http://blog.zabiello.com
Re: Polskie znaki i sortowanie
Author: TomekB
Date: Thu, 14 Sep 2006 15:29
Date: Thu, 14 Sep 2006 15:29
11 lines
1177 bytes
1177 bytes
Dnia Thu, 14 Sep 2006 08:51:39 +0100, Jaroslaw Zabiello napisał(a): > Spróbuj ustawić locale na latin2. Niestety po małym googlaniu wychodzi na to że Ruby nie korzysta z niczego w rodzaju strcoll() lecz porównuje stringi bajtami:( Swoją drogą to bardzo się zawiodłem - ani utf, ani iso - język jak ze średniowiecza. pozdrawiam -- Tomek
Re: Polskie znaki i sortowanie
Author: Marcin Mielżyński
Date: Fri, 15 Sep 2006 00:53
Date: Fri, 15 Sep 2006 00:53
32 lines
1690 bytes
1690 bytes
TomekB wrote:
> Witam!
>
> W jaki sposób zmusić Ruby do posortowania tablicy stringów z
> uwzględnieniem polskich liter zakodowanych w iso-8859-2? Podobnie jest z
> metodami upcase/downcase i podobnymi.
>
> pozdrawiam
w zasadzie rozwiązanie już istniało, wystarczy:
http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/74869
i:
require "locale.so"
require 'iconv'
iconv=Iconv.new("utf-8","whatever")
iconv2=Iconv.new("whatever","utf-8")
Locale::setlocale(Locale::LC_ALL, "pl_PL.UTF-8")
puts %w|ńńń łłśśśśłśłś ąśąś ażźć
żćźćżźćż|.map{|e|iconv.iconv(e)}.sort{|a,b|
Locale::strcoll(a,b)}.map{|e|iconv2.iconv(e)}
wygląda na to że faktycznie działa. Można pokombinować z innymi
kodowaniami coby nie przekodowywać za każdym razem docelowo.
lopex
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads