🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.ruby
4 messages
4 total messages Started by TomekB Wed, 13 Sep 2006 18:48
Polskie znaki i sortowanie
#195
Author: TomekB
Date: Wed, 13 Sep 2006 18:48
9 lines
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
#196
Author: Jaroslaw Zabiello
Date: Thu, 14 Sep 2006 07:51
11 lines
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
#197
Author: TomekB
Date: Thu, 14 Sep 2006 15:29
11 lines
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
#198
Author: Marcin Mielżyński
Date: Fri, 15 Sep 2006 00:53
32 lines
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