[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
上下前次1-新
抽出解除 レス栞
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
リロード規制です。10分ほどで解除するので、他のブラウザへ避難してください。
712(9): デフォルトの名無しさん [sage] 2011/12/18(日) 01:52:22.20 AAS
Windows + ghci での日本語表示について質問です
コンソールの文字コードを cp65001 (UTF-8) に変えて、
フォントも UTF-8 が表示できる [MS ゴシック] を使ってます
Haskell 関係無しに、コンソール上で type "ファイル名" とコマンドを打てば、
UTF-8 エンコードされた日本語テキストファイルは問題なく表示されます
この状態で ghci を立ち上げて、
s = "テスト" と記述された hs ファイルをロードし、
putStrLn s とすると、「テ・・ス・・ト・・」と表示されます
どうして余計な文字まで表示されるのでしょうか
ちなみに、実際のところ余計な文字は全角中点「・」ではなく「�」です
MSゴシックだとたまたま全角中点に見えるだけで、何か別の文字みたいです
[環境]
Windows 7
GHC 7.2.2
713(1): 712 [sage] 2011/12/18(日) 01:55:56.12 AAS
>>712
> MSゴシックだとたまたま全角中点に見えるだけで、
すいません
コンソールの表示をよく見たら、全角ではなく「半角中点」に見えます
つまり 「テ・・ス・・ト・・」 と表示されているように見えます
730: 712 [sage] 2011/12/18(日) 19:04:38.59 AAS
年収100万切ったら、Haskell なんかやってる場合じゃないと思うんだ
731(1): 712 [sage] 2011/12/18(日) 19:08:03.37 AAS
それはそうと、私の質問 >>712 はだれか分かりませんか
一応あれから色々やってみて、wtiteFile など使えば、
UTF-8 でファイルに保存できることは確認しましたが、
それで済ますならコンソールをわざわざ UTF-8 に切り換えなくても良いわけで、
なんとかコンソールに普通に表示させたいです
738(1): 712 [sage] 2011/12/18(日) 21:56:10.45 AAS
>>736736(1): デフォルトの名無しさん [sage] 2011/12/18(日) 20:27:25.38 AAS
>>731
もっと詳細を書いてくれないと、同じ環境で同じ問題にぶち当たった人しかアドバイスできないよ。
すいません
まず最終的にやりたいことは、PostgreSQL に作ったテーブル内のデータが UTF-8 の日本語で、
その文字列データを取得してコマンドプロンプトに表示するプログラムをHaskellで作る
ということ
Haskell コード内でその文字列データ([Char] 型)を変数に束縛するとことは問題なくできた
というのも、その変数に System.IO.writeFile 関数を適用して得られたファイルを見ると、
正しく UTF-8 エンコードの日本語になっていたから
(当然だけど、writeFile の前に hSetEncoding 関数を utf8 に適用している)
コマンドプロンプトの方は、cmd.exe へのショートカットファイルのプロパティで
[オプション タブ]-[現在のコードページ] を "932" に、
[フォント タブ]-[フォント] を "MS ゴシック" に、
[ショートカット タブ]-[リンク先] を "%windir%\system32\cmd.exe "/K chcp 65001" に設定
このプロパティでコマンドプロンプトを起動し、その上で ghci を立ち上げ、
自作の *.hs ファイルをロードして、関数を評価しているが、
先ほどの [Char] 型の変数を ghci 上で評価すると utf-8 文字がエスケープされる
( ascii 文字以外は \ マークと数字数桁で表示される)
同じ [Char] 型の変数に putStrLn 関数を適用すると、
>>712(正確には >>713)のように日本語部分だけ各日本語文字1字に対して
余計な文字が2つずつ後に付随してくる(まぁエスケープに比べて読めなくはない)
どうすれば、コマンドプロンプト(コンソール)に UTF-8 日本語を正しく表示できるのだろうか
上記の現象はデータベース処理とは関係なく、UTF-8 エンコードされた
Haskell プログラムが書かれたファイル内に直接 s="テスト" と書いて、
それを ghci 上で同じように評価したりしても再現できるため、
>>712 では現象再現のための最低限の情報だけで質問しました
739: 712 [sage] 2011/12/18(日) 21:58:27.43 AAS
>>738
訂正
> [ショートカット タブ]-[リンク先] を "%windir%\system32\cmd.exe "/K chcp 65001" に設定
[ショートカット タブ]-[リンク先] を "%windir%\system32\cmd.exe /K chcp 65001" に設定
754: 712 [sage] 2011/12/19(月) 18:48:59.59 AAS
>>753753(1): デフォルトの名無しさん [sage] 2011/12/19(月) 18:36:53.90 AAS
haskellでWEBアプリって簡単にでける?
作ってる奴いるか?
snap とかのフレームワークを使え
簡単かどうかは気分次第
755(1): 712 [sage] 2011/12/19(月) 18:51:02.49 AAS
>>740740(1): デフォルトの名無しさん [sage] 2011/12/19(月) 03:22:15.55 AAS
これってコマンドプロンプト側の問題じゃなかったっけ・・・
他の言語でも似たようなことになった記憶が
申し訳ないがhaskellでの解決法は知らない
そうですか
私も心が挫けそうで、もう諦め気味です
Windows 標準搭載のコマンドプロンプト以外のコンソールでもダメだったら諦めます
760: 712 [sage] 2011/12/20(火) 12:36:53.70 AAS
7.2 はライブラリの方がまだ追いついていない場合が多い
base のバージョンとかコンパイル仕様の変更とか
761: 712 [sage] 2011/12/20(火) 12:40:57.01 AAS
>>755
msys とかでもダメっぽいんで、もう諦めました
上下前次1-新書関写板覧索設栞歴
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.039s