Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Ruby a unicode: co přinese chystané Ruby 1.9?

V posledním díle miniseriálku o unicode v Ruby vezmeme do rukou křišťálovou kouli a nahlédneme do budoucnosti jazyka – podíváme se na podporu unicode v chystaném Ruby 1.9 a pro zajímavost si také řekneme pár slov o podpoře unicode v alternativních implementacích Ruby.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Unicode teprve teď?!

Podpora unicode je slibována do příští stabilní major verze, která bude díky změně číslování označována jako Ruby 1.9. Věřím, že mnozí z vás si pokládají otázku, proč trvalo tak dlouho rozhoupat se k dodání tak důležité technologie do jazyka. Odpověď je prostá – Matz, otec Ruby, stejně jako velká řada dalších programátorů ovlivňující budoucnost Ruby, nejsou nakloněni konverzi různých druhů kódování do unicode, zejména mělo-li by se potom zase konvertovat zpět do výchozího kódování. Hledala se šetrnější alternativa a nakonec bylo rozhodnuto, že řetězec ponese automaticky údaj o svém kódování a žádné konvertování z a do unicode se konat nebude. Defaultní kódování bude zřejmě UTF-8, samozřejmě nebude žádný problém jej změnit například na kódování CP-1250 nebo ISO-8859–2, Ruby si s tím už poradí. Řetězec bude sledem znaků, ať použijete jakékoliv kódování.

"hola hej"[0]
=> h # místo 104

Tato změna se logicky dotkne metod zpracovávajících vstup, takže napříkad při otevírání souboru půjde určit, v jakém kódování očekáváme jeho obsah. Změny lze očekávat také v některých metodách řetězce, jako například v metodě [], která bude logicky vracet znak místo ASCII hodnoty znaku.

Určení kódování

Aby bylo jasné, v jakém kódování skript je, bude nově třeba přidat do skriptu komentář nesoucí informaci o jeho kódování:

#!/usr/bin/env ruby
# coding=utf-8

Je důležité, aby byl tento komentář na prvním nebo druhém řádku skriptu, jinak nebude fungovat. V unixových systémech je logické jeho umístění hned za informaci o použitém interpretu, kterou systém očekává na prvním řádku

A jak to vypadá v praxi?

Zkoušel jsem zkompilovat snapshot vývojové verze Ruby, výsledky jsou poměrně pozitivní:

#!/usr/bin/env ruby
# coding=utf-8

puts("čeština".length)
puts("čeština".reverse)
"čeština".each_char { |char| print("#{char} ") }

=> 7
=> anitšeč
=> č e š t i n a

Jak je vidno z ukázky, již skutečně platí, že řetězec je sousledností znaků, takže spoustu dříve nefunkčních metod třídy String již funguje bez potíží. Do Ruby byla též vrácena metoda each_char, kterou lze používat k procházení jednotlivých znaků řetězce. Bohužel, metody upcase, downcase, capitalize a swapcase mi v době psaní článku stále nefungovaly, snad se dočkáme později.

JRuby

MRI není jediná implementace Ruby. Nejpokročilejší z alternativních implementací Ruby je dozajista JRuby, implementace Ruby v Javě, nad níž drží ochrannou ruku i velký Sun. Ta od verze 1.0 unicode podporuje. Protože JRuby běží pod JVM, je logické, že implementace unicode je dělána pomocí javovských řetězců kódovaných do UTF-16. JRuby umožňuje jak použití řetězců reprezentovaných jako sekvence bytů, stejně jako je tomu v současné implementaci Ruby, tak právě použití javovských unicode řetězců.

TIB2012

       

IronRuby

IronRuby je jedna ze dvou implementací Ruby pro platformu .NET. Je ve fázi intenzivního vývoje, unicode v něm každopádně podporováno bude – pomocí CLR stringů, které jsou unicodové. Jak bude řešena kompatibilita s chystaným Ruby 1.9.1, je zatím otázka.

Závěr, aneb co z toho a kdy to přijde?

Zdá se, že ohledně unicode se konečně začíná blýskat na lepší časy. Řešení, které je ohleduplné k těm, kteří nepoužívají UTF-8, mi připadá jako rozumná volba a v japonském prostředí, kde penetrace UTF-8 je stále poněkud problematická, se jeví logicky. Co se týče termínů vydání nového Ruby 1.9.1, Matz prohlašuje, že se můžeme těšit na letošní Vánoce. Sláva!

Odkazy

Jakub Šťastný

Jakub Šťastný

Jakub Šťastný byl v letech 2007 až 2008 redaktorem serveru Root.cz. Mezi jeho zájmy patří Linux, programování a typografický systém TeX.

Školení: IP v 6 na Linuxu

Tento krátký kurz je určený speciálně pro zkušené správce sítí IPv4, kteří se chtějí seznámit s nastupujícím internetovým protokolem IPv6.

Platforma: Linux

  • Adresace
  • Link-local adresy
  • Dynamické přidělování adres
  • a další

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,28

Přehled názorů

pozn.
python 19. 11. 2007 00:17
Nový
špatně...
LO 19. 11. 2007 00:56
Nový
├ 
Re: špatně...
ja 19. 11. 2007 01:12
Nový
│
├ 
Re: špatně...
Inkvizitor 19. 11. 2007 01:28
Nový
│
└ 
Re: špatně...
LO 19. 11. 2007 01:48
Nový
│
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 06:57
Nový
│
 
 
└ 
Re: špatně...
LO 19. 11. 2007 14:05
Nový
│
 
 
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 14:43
Nový
│
 
 
 
 
└ 
Re: špatně...
LO 19. 11. 2007 15:38
Nový
├ 
Re: špatně...
Inkvizitor 19. 11. 2007 01:15
Nový
└ 
Re: špatně...
Miloslav Ponkrác 19. 11. 2007 11:02
Nový
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 12:03
Nový
 
 
└ 
Re: špatně...
LO 19. 11. 2007 12:53
Nový
 
 
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 13:36
Nový
 
 
 
 
└ 
Re: špatně...
LO 19. 11. 2007 13:59
Nový
 
 
 
 
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 14:45
Nový
 
 
 
 
 
 
└ 
Re: špatně...
LO 19. 11. 2007 15:43
Nový
 
 
 
 
 
 
 
└ 
Re: špatně...
Rejpal 19. 11. 2007 15:56
Nový
 
 
 
 
 
 
 
 
└ 
Re: špatně...
Inkvizitor 19. 11. 2007 21:57
Nový
 
 
 
 
 
 
 
 
 
└ 
Re: špatně...
Makovec 19. 11. 2007 22:49
Nový
 
 
 
 
 
 
 
 
 
 
└ 
Re: špatně...
Inkvizitor 19. 11. 2007 23:09
Nový
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: špatně...
Makovec 20. 11. 2007 07:05
Nový
 
 
 
 
 
 
 
 
 
 
 
 
└ 
Re: špatně...
LO 26. 11. 2007 17:45
Nový
převod sad
repulsive 19. 11. 2007 10:41
Nový
nevim, skoly nemam
xtr 19. 11. 2007 12:23
Nový
├ 
Re: nevim, skoly nemam
LO 19. 11. 2007 12:54
Nový
└ 
Re: nevim, skoly nemam
anonymní uživatel 20. 11. 2007 00:57
Nový
 
├ 
Re: nevim, skoly nemam
anonymní uživatel 20. 11. 2007 01:11
Nový
 
├ 
Re: nevim, skoly nemam
Rejpal 20. 11. 2007 01:29
Nový
 
│
└ 
Re: nevim, skoly nemam
anonymní uživatel 20. 11. 2007 11:33
Nový
 
│
 
└ 
Re: nevim, skoly nemam
Rejpal 20. 11. 2007 12:47
Nový
 
└ 
Re: nevim, skoly nemam
JS 20. 11. 2007 13:49
Nový
 
 
└ 
Re: nevim, skoly nemam
Rejpal 20. 11. 2007 17:11
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem