Помогите, плз, новичку.
Не могу понять как вообще работать с кодировкой utf-8. Как настроить, что загрузить и т.д. Пытался разобраться посредством этой страницы: http://www.gnu.org/software/smalltalk/manual/html_node/Locales.html Но результат нулевой. Точнее не совсем нулевой, а сложилось впечатление, что нормальная работа с данной кодировкой не предусмотрена. Интересуют вполне обыденные вещи, такие как: получение символа по индексу, получение длины строки и т.п. Это вообще реально? P.S. ОС: Фрибсд 8.0 ST: GNU ST 3.2 -- http://groups.google.ru/group/sugr |
Привет,
17.07.10, dymko<[hidden email]> написал(а): > Не могу понять как вообще работать с кодировкой utf-8. Как настроить, > что загрузить и т.д. PackageLoader fileInPackage: #I18N. > Точнее не совсем нулевой, а сложилось впечатление, что нормальная > работа с данной кодировкой не предусмотрена. На самом деле всё не так уж плохо :) Только регекспы с юникодными строками в GNU Smalltalk не работают > Интересуют вполне обыденные вещи, такие как: получение символа по > индексу, получение длины строки и т.п. > Это вообще реально? Да, вполне. Только работать надо не с объектами класса String, а с объектами класса UnicodeString (появляется как раз после загрузки I18N). Надеюсь, этот пример поможет: st> 'мясо' size 8 st> 'мясо!' size 9 st> 'мясо!' asUnicodeString 'мясо!' st> 'мясо!' asUnicodeString size 5 st> 'мясо!' at: 1 $<16r00D0> st> 'мясо!' size 9 st> 'мясо!' asUnicodeString inspect An instance of UnicodeString contents: [ [1]: $м [2]: $я [3]: $с [4]: $о [5]: $! ] 'мясо!' st> 'мясо!' asUnicodeString at: 1 $м st> 'мясо!' asUnicodeString size 5 Чтобы получать юникодные строки при работе с файлами, надо использовать EncodedStream. Вот ещё небольшой пример: ~/devel $ cat test.txt Квик браун фокс джампс овер (не помню) лэзи дог. ~/devel $ file test.txt test.txt: UTF-8 Unicode text ~/devel $ cat enc.st PackageLoader fileInPackage: #I18N. (I18N.EncodedStream on: (File name: (Smalltalk getArgv: 1)) readStream from: #utf8) linesDo: [:each | Transcript << each; cr] ~/devel $ gst -f enc.st test.txt Квик браун фокс джампс овер (не помню) лэзи дог. ~/devel $ Удачи! -- http://groups.google.ru/group/sugr |
Спасибо большое, очень выручили.
On 17 июл, 16:32, Dmitry Matveev <[hidden email]> wrote: > Привет, > > 17.07.10, dymko<[hidden email]> написал(а): > > > Не могу понять как вообще работать с кодировкой utf-8. Как настроить, > > что загрузить и т.д. > > PackageLoader fileInPackage: #I18N. > > > Точнее не совсем нулевой, а сложилось впечатление, что нормальная > > работа с данной кодировкой не предусмотрена. > > На самом деле всё не так уж плохо :) Только регекспы с юникодными > строками в GNU Smalltalk не работают > > > Интересуют вполне обыденные вещи, такие как: получение символа по > > индексу, получение длины строки и т.п. > > Это вообще реально? > > Да, вполне. Только работать надо не с объектами класса String, а с > объектами класса UnicodeString (появляется как раз после загрузки > I18N). Надеюсь, этот пример поможет: > > st> 'мясо' size > 8 > st> 'мясо!' size > 9 > st> 'мясо!' asUnicodeString > 'мясо!' > st> 'мясо!' asUnicodeString size > 5 > st> 'мясо!' at: 1 > $<16r00D0> > st> 'мясо!' size > 9 > st> 'мясо!' asUnicodeString inspect > An instance of UnicodeString > contents: [ > [1]: $м > [2]: $я > [3]: $с > [4]: $о > [5]: $! > ] > 'мясо!' > st> 'мясо!' asUnicodeString at: 1 > $м > st> 'мясо!' asUnicodeString size > 5 > > Чтобы получать юникодные строки при работе с файлами, надо > использовать EncodedStream. Вот ещё небольшой пример: > > ~/devel $ cat test.txt > Квик браун фокс > джампс овер (не помню) > лэзи дог. > ~/devel $ file test.txt > test.txt: UTF-8 Unicode text > ~/devel $ cat enc.st > PackageLoader fileInPackage: #I18N. > (I18N.EncodedStream > on: (File name: (Smalltalk getArgv: 1)) readStream > from: #utf8) > linesDo: [:each | Transcript << each; cr] > > ~/devel $ gst -f enc.st test.txt > Квик браун фокс > джампс овер (не помню) > лэзи дог. > ~/devel $ > > Удачи! -- http://groups.google.ru/group/sugr |
In reply to this post by Dmitry Matveev
Так, сразу маленькая поправка:
--- from: #utf8) +++ from: #utf8 to: #utf8) Тогда будем в :each получать объекты класса I18N.EncodedString. 17.07.10, Dmitry Matveev<[hidden email]> написал(а): > Привет, > > 17.07.10, dymko<[hidden email]> написал(а): >> Не могу понять как вообще работать с кодировкой utf-8. Как настроить, >> что загрузить и т.д. > > PackageLoader fileInPackage: #I18N. > >> Точнее не совсем нулевой, а сложилось впечатление, что нормальная >> работа с данной кодировкой не предусмотрена. > > На самом деле всё не так уж плохо :) Только регекспы с юникодными > строками в GNU Smalltalk не работают > >> Интересуют вполне обыденные вещи, такие как: получение символа по >> индексу, получение длины строки и т.п. >> Это вообще реально? > > Да, вполне. Только работать надо не с объектами класса String, а с > объектами класса UnicodeString (появляется как раз после загрузки > I18N). Надеюсь, этот пример поможет: > > st> 'мясо' size > 8 > st> 'мясо!' size > 9 > st> 'мясо!' asUnicodeString > 'мясо!' > st> 'мясо!' asUnicodeString size > 5 > st> 'мясо!' at: 1 > $<16r00D0> > st> 'мясо!' size > 9 > st> 'мясо!' asUnicodeString inspect > An instance of UnicodeString > contents: [ > [1]: $м > [2]: $я > [3]: $с > [4]: $о > [5]: $! > ] > 'мясо!' > st> 'мясо!' asUnicodeString at: 1 > $м > st> 'мясо!' asUnicodeString size > 5 > > Чтобы получать юникодные строки при работе с файлами, надо > использовать EncodedStream. Вот ещё небольшой пример: > > ~/devel $ cat test.txt > Квик браун фокс > джампс овер (не помню) > лэзи дог. > ~/devel $ file test.txt > test.txt: UTF-8 Unicode text > ~/devel $ cat enc.st > PackageLoader fileInPackage: #I18N. > (I18N.EncodedStream > on: (File name: (Smalltalk getArgv: 1)) readStream > from: #utf8) > linesDo: [:each | Transcript << each; cr] > > ~/devel $ gst -f enc.st test.txt > Квик браун фокс > джампс овер (не помню) > лэзи дог. > ~/devel $ > > Удачи! > -- http://groups.google.ru/group/sugr |
Free forum by Nabble | Edit this page |