山本です。
"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/