作者: Bruce.
日時: 2006/2/27(23:06)
Bruce.です。

元はTSperlでの話ですが、別の言語になるのでお引越し。


Scripting Laboratory: Tcl/Tk and Japanese Characters
http://www.geocities.co.jp/SiliconValley/4137/dir1/tclj.html
	
によると、

>Tcl/Tkの日本語の扱い
>
> Tcl/TkはPerl、Python、Schemeといったスクリプト言語の中でも、
> 日本語の扱いは飛びぬけて優れています。 Tcl/Tk 8.1以降ではJava
> と同じく、本体処理系が文字列を、非英語圏の複数バイト文字に対応
> したUnicodeの一種、 UTF-8で扱うようになりました。もちろん、
> 世界中の言語の文字に対応したわけではありませんが、日本語の文字
> 列としての扱い、Tk部品への表示、ファイル読み書きは 8.1 から、
> Tk部品へのキー入力は 8.3 の後半から、ほぼ問題なく行えるように
> なっています。
>
>●文字列として使う
> 日本語の文字列も、普通にスクリプト中に含めることができます。
>ただし、Windowsの場合はシフトJISコードで、UNIXの場合は環境変数
> LANGやロケ−ル (ロカール)で指定した文字コードでスクリプトを
> 書く必要があります。


ということなので、たとえばWindowsの場合ではSJISでスクリプトを
記述しても、自動的にUnicodeに変換されるようです。

以下実行例(ActiveTcl)

E:\work>copy con code.tcl
set str {こんにちは  世界}
puts [string length $str]
puts [string bytelength $str]
puts [regexp {\s+} $str]
puts [regexp -indices {\s+} $str pos]
puts $pos
^Z
        1 個のファイルをコピーしました。

E:\work>tclsh code.tcl
こんにちは世界
7
21
1
5 6

lengthの戻り値は、バイト数ではなく文字数であり、
正規表現のメタ文字\sには全角空白が含まれています。

-- 
木村浩一
  I thought what I'd do was, I'd pretend I was one of those deaf-mutes.
  mail kbk@...
	web  www.kt.rim.or.jp/~kbk/index.html#zakkicho
	     homepage3.nifty.com/farstar/