CharacterEncoding

内部エンコーディングと外部エンコーディング

Tcl8.1以降では基本的に内部での文字コードはUTF-8で、 ファイル入出力の際に内部エンコーディングと外部エンコーディングの間の変換が行われる。

スクリプトそれ自身の文字コードはロケールの設定等から判断される。 日本語Windowsの場合、スクリプトの文字コードはCP932(Shift JISとほぼ同じ物を指す)とみなされる。

fconfigureコマンドによってファイル入出力の際の外部エンコーディングの指定が可能である。

# $f はファイルハンドルが入った変数。stdoutなどでも良い。
fconfigure $f -encoding shiftjis

IANA登録文字コードとTclの文字エンコーディング名

Tclの文字エンコーディング名はIANAに登録されている名前 (MIMEで使われる)と同一ではない。たとえば、

というように日本語の文字エンコーディングに関してはEUC以外は異なっている。

IANA登録文字コードとTclの文字エンコーディング名の間の変換には TclLibのmimeパッケージに含まれる ::mime::mapencodingと::mime::reversemapencodingが利用できる。

# 以下のコマンドは "Shift_JIS" を返す
::mime::mapencoding shiftjis
# 以下のコマンドは "shiftjis" を返す
::mime::reversemapencoding Shift_JIS

JapaneseTclWiki
powered by TickleWiki