On Thu, 3 Jul 2008 00:08:45 +0900
In article <486B9AB2.80804 / airemix.jp>
[[ruby-dev:35328] Re: Win32 Unicode console output]
"NARUSE, Yui" <naruse / airemix.jp> wrote:

> > こんなのもだめですね。やはりここは trascode の仕組みを使った方がよいので
> > はないかと思います。
> 
> これは仕様のつもりだったのですが、うーん、どうなんだろう。
> Windows に限っては、以下ができちゃうのもアリかなぁ、とも思い始めてきました。
> 他の環境との兼ね合いを考えると迷いもありますが。

Windowsのコマンド窓って特殊ですからねえ。

> > ruby19 -e'print"\u{2603}";print"\xA9".force_encoding("iso-8859-1");
>   print"\xa4\xa2\xa4\xa4".force_encoding
> ("eucjp")'
> [雪ダルマ][Copyright]あい
> 
> > (今のところ全文字セットは UTF-16LE に変換できますよね?)
> 
> いえ、変換できるものを数えたほうが早くて、
> ISO 8859 シリーズと日本語、韓国語、UTF-8, UTF-{16,32}{BE,LE} だけです。
> 中国系、台湾系、タイ、ウクライナあたりは無理ですね、あと UTF-7 も。

いや、現状の実装で、ということではなくて、エンコーディングの仕様上、です。

> メジャーなところだと ASCII-8BIT が無理です。

それは、……Localeにするしかないのかな。


> > あとは入力系、ReadConsoleInputW() と GetCommandLineW() か…
> > -EUTF-8 とかで起動された場合に限って使用する、とか制御しないと駄目ですよ
> > ねやっぱ。
> 
> まさか、Windows のコマンドプロンプトで、
> locale と異なる文字列を生で打つ勇者はいないと思うんですが、

いや、CreateProcessW() とか ShellExecuteW() という強者が居ますから。

Exerb か何かで exe 化されたスクリプトで、関連づけされたファイルを開く、
なんてシチュエーションを考えると、エクスプローラが non-Locale のファイル
名を渡してくるなんて可能性も充分あります。


-- 
Tietew <tietew / tietew.net>
Blog: http://www.tietew.jp/
PGP: 26CB 71BB B595 09C4 0153  81C4 773C 963A D51B 8CAA