読者です 読者をやめる 読者になる 読者になる

レガシーコード生産ガイド

私に教えられることなら

GNU Smalltalkで日本語(Unicode)を扱う

Smalltalk

Pharo4もSqueak5もLinuxMint+fcitx(Mozc)で日本語入力できないのでGNU Smalltalk使ってみる。

コンソールからgstを起動してutf-8で使う場合、一応文字列は日本語で入力・表示できるけど、内部的にはutf-8じゃなくて1byteの列なので扱いにくい

st> Transcript show: 'メソ'; cr
メソ
Transcript
st> 'メソ' at: 1
$<16r00E3>
st> 'メソ' at: 6
$<16r00BD>

Unicode文字列(utf-8がデフォルトなのかな)ではUnicodeStringを使うみたいだ。その際、Unicode文字列を表示したり、fromStringなどを使うために、I18Nパッケージをロードしておく。

st> PackageLoader fileInPackage: 'I18N'.
Loading package Iconv
Loading package I18N
PackageLoader
st> (UnicodeString fromString: 'メソ') at: 1
$メ
st> (UnicodeString fromString: 'メソ') at: 2
$ソ

Transcript show:などで使う場合は、文字列に戻す必要がある。

st> Transcript show: (UnicodeString fromString: 'メソ') asString ; cr
メソ
Transcript
広告を非表示にする