Tcl8.1以降では基本的に内部での文字コードはUTF-8で、 ファイル入出力の際に内部エンコーディングと外部エンコーディングの間の変換が行われる。
スクリプトそれ自身の文字コードはロケールの設定等から判断される。 日本語Windowsの場合、スクリプトの文字コードはCP932(Shift JISとほぼ同じ物を指す)とみなされる。
fconfigureコマンドによってファイル入出力の際の外部エンコーディングの指定が可能である。
# $f はファイルハンドルが入った変数。stdoutなどでも良い。
fconfigure $f -encoding shiftjis
Tclの文字エンコーディング名はIANAに登録されている名前 (MIMEで使われる)と同一ではない。たとえば、
というように日本語の文字エンコーディングに関してはEUC以外は異なっている。
IANA登録文字コードとTclの文字エンコーディング名の間の変換には TclLibのmimeパッケージに含まれる ::mime::mapencodingと::mime::reversemapencodingが利用できる。
# 以下のコマンドは "Shift_JIS" を返す
::mime::mapencoding shiftjis
# 以下のコマンドは "shiftjis" を返す
::mime::reversemapencoding Shift_JIS