作者: Koichi Yamamoto
日時: 2004/2/8(16:46)
山本です。

"HFC01730@... (水羽信男)"さんは書きました:
>  一度、ご教示いただこうと思いながら、そのままにしていたのです
> が、ユニーコードで保存しているデータのコンソール上での表示が以
> 下のようになります。
> 
>  僕が不思議なのは、■(贛)で示した文字が、正しく表示さ
> れるのが、tclsh84とtkconとで、逆になることです。なぜ、両方、正
> しく表示されないのか、ということも不思議ですが……。
>  この件、さしあたり使用上、問題はないのですが、気になったので、
> お尋ねします。どなたかご教示いただければ、幸甚です。
> 
> tclsh84の場合
> 
> % type guanchalist.txt
> 3 卞之下 べんしか 1910 - 北京大学 英国 大陸
> 1 王芸生 おううんせい 1901 1980 ? ? 大陸
> 2 王迅中 おうじんちゅう ? ? 清華大学 日本 大陸
> 4 王■愚 おうかんぐ 1906 - 清華大学 米国 大陸
> % source sortfield.tcl
> % sortfield guanchalist.txt 0 unicode
> 1 王芸生 おううんせい 1901 1980 ? ? 大陸
> 2 王迅中 おうじんちゅう ? ? 清華大学 日本 大陸
> 3 卞之下 べんしか 1910 - 北京大学 英国 大陸
> 4 王?愚 おうかんぐ 1906 - 清華大学 米国 大陸


tclsh84のコマンドプロンプトでは、入力されたコマンドが
Tclのものでなかった場合、Windowsのコマンドプロンプト
(cmd.exeとか)にコマンドを渡して実行させています。
Windows2000のtypeコマンドはunicodeファイルを文字化け
させないように画面出力しているようですね。
しかし、tclsh84の実行結果はWindowsの言語設定に応じて
文字コードを変換してしまうため、日本語Windowsの環境では
贛(== U+8D1B)をcp932(sjis)に変換しようとして「?」
文字になります。

tkconのGUIはTcl/Tkで作られているため、
&H36123;は正常に画面表示できるようになっています。
(typeコマンドの出力が文字化けしたのはよく判りませんけど)

試しに、次のコマンドをtclsh84とtkconで実行してみてください:

format %c 12354  ;# 12354==U+3042==あ
format %c 36123  ;# 36123==U+8D1B==■


私がちょっと気持ち悪いなと思ったのは、tclsh84で
typeコマンドを実行したときに&H36123;が文字化けしないで
ちゃんと出力されている点です。tclsh84が文字コード変換
しているのであれば、ちゃんと文字化けする(笑)はずなのですが、
なぜ文字化けしなかったのか、不明です。
Tcl本体のソースを追いかければすぐに判るんでしょうけど、
風邪で2日間寝込んでいた私にはちょっと辛すぎ(--;;;

--
Koichi Yamamoto, 
http://homepage3.nifty.com/yamakox/