- ベストアンサー
UTF-8を表示できるWindows環境下のコンソール
現在Windows環境下でUTF-8のコードを書いています。 で、コマンドプロンプト上で書いたプログラムを実行するのですが、日本語表示の部分がエラーを起こすので、日本語表示の内容を確認するさいには、レンタルサーバーに移行して、SSHで実行しています。Tera Padには文字コードを指定できる機能がありますから。 Windows環境下で、UTF-8を表示できるコンソールってないものでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
丁度同じことをしたくて、先ほど成功しましたのでやりかたをお伝えします。コマンドプロンプトで表示できます。chcpだけでは日本語が表示できない原因は、一般の文字コードのデフォルトのフォントとして、日本語を含まないLucida Consoleが指定されていることです。そこで、デフォルトのフォントとして日本語のMS ゴシックを指定してやります。 (1)スタートメニューの検索の開始にregeditと入れて、レジストリエディタを起動します。 (2)HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Console\TrueTypeFont を開きます。 (3)名前:0,種類:REG_SZ,データ:Lucida Consoleの0をダブルクリックして、値のデータとして「MS ゴシック」を入力します。(カッコは不要) (4)あとは2番、4番の方の回答のようにすれば、日本語で表示できると思います。
その他の回答 (5)
- trapezium
- ベストアンサー率62% (276/442)
遅くなりましたが前回の補足です。どうも説明不足ですみません。 Cygtermですが、最近のTeraTermには含まれているので独自にmakeは不要です。wrapperのcyglaunch.exeから起動するか、「Cygwin接続」というのがメニューにあって、これでCygwinのbashが起動できます。文字コードはTeraTermと同様「設定->端末」から送信受信別々に出来ますので、必要におおじて変更すればその場で変更可能なはずです。 そのままSSH接続してLinuxやBSDなど複数の環境のメンテナンスに便利ですし、emacsと組み合わせれば文字コードはかなり自由に取り扱えるようになります。 私もcygwin自体は深く突っ込んでません。setup.exeでモジュール選んでも依存関係も完璧じゃないので、動作しないものもあるみたいです。パスの問題は先の「Cygwin接続」だと大体自動的に設定されてます。手動でbashを起動するなら、c:\cygwin\bin\bash.exe --login -iとかすると/etc/profileを読んでくれるようです。bashrcは/etc/bash.bashrc自体を編集しちゃってもいいでしょうし、$HOME/.bashrcにコピーして編集してもいいです。ここら辺はCygwinのバージョンによっていくらか違うかもしれません。
お礼
ありがとうございます。 Cygtermの方がDOS窓より使いやすいとのことですし、リモートサーバーとローカルサーバーでコンソールに入力するコマンドを一元化できるメリットも嬉しいので昨日から色々いじってみました。 確かにcygterm.exeはTera Termと同じフォルダの中にありました。でもそこから先の設定がうまくいかないんですよね。ネットをあさってみても古いバージョンで、しかもリモートサーバーを前提にした説明はあるんですけど、ローカルサーバーでDOS窓の上位バージョン的に、まあ使うコマンドはUNIXとwindowsで違うのでしょうが、用いることを前提に話をしているサイトが見当たらないんです。 思ってみれば、私がリモートサーバーを用いる時は、出来たCGIの最終チェックを行う時だけ。ファイル管理はFTPソフトの仕事ですし、それ以外のコマンド入力と言ったら、今はPerlですがしばらくしたらPHP、まあその時々で言語は変わるでしょうが、そのデバッグのためのものだけです。これで今まで以上に快適なコンソール環境があったところで、その恩恵を理解できるのか?そもそもTera Termを使いだしたのも最近の話で、Tera Termを使いこなしたととても言えない状況です。 状況はローカルサーバーをDOS窓で使う時もだいたい同じで、となると現在の私に求められるのは、Cygtermの設定をやり切る努力ではなく、Tera TermやCygwinに慣れることだと思い至りました。 UNIXをこれまで使ったことがないので、Tera Termを使う際も.bashrcを良く理解していなくてレンタルサーバーのサポートに迷惑を掛けてしまったんですけど、まあ、shellを使うようになって、そういう設定ファイルの書き方をある程度理解しないことには、今Cygtermを使おうとすると、多分trapeziumさんに、一から十までマニュアルを書いてもらわないといけないように思います。 幸いなことに今回はWindows環境下でUTF-8を表示できればそれで良しだったので、DOS窓やCygwinでそれが出来る以上、これ良しとしましょう。 そのうちCygtermの設定は必要になると思いますので、その時またご相談させてください。どうもありがとうございました。
- equinox2
- ベストアンサー率48% (321/660)
>chcp 65001 フォントをMSゴシックに変更し、上記をやってもNGだったので 以下のコマンドで確認しました。 #CHCPのフォント切り替えにバグがあるらしい情報も・・・ cmd /f:on /k "chcp 65001"
補足
確かにshift-JISの時はMSゴシックが選択できるんですけど、選択した状態から chcp 65001 をやってみても、フォントが違うものに変ってしまいます。 バグなんでしょうか。 あるいはレジストリのどっかを変えればどうにかなる問題なのか? regedit.exeで"cmd"を検索してみました。一つヒットしてHKEY_CLASSES_ROOTの下に.cmdというのがあって (規定) REG_SZ cmdfile とあることは確認しましたが、それ以上は私の力では分かりません。 考えてみると、CygwinもDOS窓をバックで使っているようで、Cygwinのタイトルバーを右クリックして出てくるダイアログとDOS窓のタイトルバーを右クリックして出てくるダイアログは全く一緒です。となるとDOS窓でUTF-8の表示に問題があるなら、CygwinでUTF-8を表示できるはずがありませんね。 だからCygTermを使いなさいということなのでしょう。まだ使ってないからよく分からないですけど、CygTermはCygwinとTera Termの橋渡しをするツールだとか。Tera TermだとUTF-8を表示できます。 ちょっと試してみますね。
- tatsu99
- ベストアンサー率52% (391/751)
> chcp 65001 >とやると > Active code page: 65001 >と表示され、文字のフォントも変わりました。 中略 >何がダメだと思われますか? フォントが対応していないためです。 コマンドプロンプトのタイトルバーを右クリックし、 MSゴシックのフォントに切り替えてください。 そうするとutf-8.txtの漢字が正しく表示されます。
- equinox2
- ベストアンサー率48% (321/660)
コマンドプロンプトから cmd /f:on /k "chcp 65001" と入力すればUTFで表示されるようになりませんか。 #XPでUTFの文字のTypeはうまくいきましたが・・
補足
ありがとうございます。 chcp 65001 とやると Active code page: 65001 と表示され、文字のフォントも変わりました。 でも type utf-8.txt とやっても文字化けしています。ちなみにutf-8.txtはUTF-8で記述したテキストファイルです。 chcp 932 とやると 現在のコードページ:932 と表示され、文字のフォントはデフォルトに戻りました。 type shift-JIS.txt とやると文字化けなく文章が表示されます。 何がダメだと思われますか?
- trapezium
- ベストアンサー率62% (276/442)
Windowsはメインじゃないので詳しくないですが、私はTeraTermとCygwin入れてcygterm使ってます。
お礼
NO.4にCygTermを「ちょっと試してみますね。」と書いたはいいものの・・・ 補足を追加できないのでお礼に書きます。 http://www.amy.hi-ho.ne.jp/tachibana/cygwin/cygterm.html を参考にCygTermをインストールしてみました。 このサイトではcygterm103.tgzとなっていますが、最新版はcygterm107.tgzみたいですね。でも展開すると、このサイトの通り Makefiel README.txt cygterm.cc cygterm.cfg が出てきます。 問題はこの後で、これをCygwinからmakeしたところ bash: make: command not found と出てきます。 入れたばっかりのCygwinで何も環境設定をしていないからこういうことになるんでしょう。 一応.bashrcがC:\Program Files\skelに、bash.bashrcがC:\Program Files\etcにあるのを確認しましたが、どこに何を記述すればパスが通るのでしょうか。 そもそもmakeは入っているのか? 何にも知らなくて、恥ずかしい限りです。
補足
ありがとうございます。 とりあえずCygwinをインストールしました。 とりあえずUNIXと同等のコンソールがWindows環境上で動いたので、コンソールとしてはこれで満足です。CygTermがあるともっと便利になるのでしょうが、Cygwinだけの環境がどのように不便なのか分からないのにもっと上の環境を・・・なんて求めても欲張りなので、取りあえずCygwinでやってみようと思います。 ただ今回、Windows標準のコマンドプロンプトが不便だと思うに至った理由は、UTF-8が表示出来ないからです。Cygwinもインストールしたばかりのデフォルトの状態はshift-JISで、UTF-8は文字化けしてしまいます。 どこで設定を変えるのだろうと探してみると、「プロパティ」の「オプション」に、ありました。で、「現在のコードページ」の枠にカーソルを持っていって右クリックするとヘルプがインストールされていない旨が出たので言われるままMicrosoftのサイトでヘルプのexeファイルをダウンロードしました。改めて右クリックすると「Windows.hlpが見つかりません。」となり、これ以上先に進めませんでした。 文字コードの設定はどうすれば良いでしょうか? Windowsのバージョンは Vista Home Premium です。
お礼
ありがとうございます! 出来ました! ただちょっと気にかかることもあります。 私のPCでDOS窓のダイアログを開くと、プロパティのフォントに、「MS ゴシック」の表示はありません。何も選択されていない状態になっているので、プロパティを閉じることも出来ません。「ラスタ フォント」しか表示されていないので「ラスタ フォント」を選択しようとしましたが、これも選択できません。幸い、「キャンセル」でプロパティを閉じることは出来ました。 ダイアログを閉じ、DOS窓のタイトルバーで右クリックから「既定値」を選ぶと、そこには「MS ゴシック」が表示されていて、選択することも可能です。 「既定値」を閉じて type utf-8.txt とやるとUTF-8で記述されたファイルが文字化けせずに表示されるのですから、文字コードはUTF-8に切り替わったようです。 それでもプロパティを開くと「MS ゴシック」の表示はありません。「キャンセル」以外の選択肢が無い状況は以前と同じです。 そういうわけでプロパティの「フォント」タブは使用不可となりました。他のタブを開く際は、一旦「既定値」のプロパティを開き、そこで開きたいタブを開いて「キャンセル」。あらためてプロパティをクリックすると、プロパティのタブも「既定値」で最後に開いたタブになっている、という運びです。ぜったいにプロパティでフォントタブを開いてはいけません。 更にややこしいのは、同じことを別のPCにやったところ、別のPCではプロパティのフォントに「MS ゴシック」が表示されました。フォントタブに異常は全くありません。 ところが肝心のDOS窓において、UTF-8で書かれたファイルが文字化けを起こすのです。「既定値」を選んでも状況は変わりません。 2台のPCはどちらもFrontier製で、OSはWindows Vista Home Premiumです。 なんで2台のPCで挙動が違うねん。(ここだけ関西弁) しっくりといかないのですが、私のPCでUTF-8を表示することは一応できるようになりました。 ありがとうございます。