[過去ログ] 関数型プログラミング言語Haskell Part16 (978レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
738
(1): 712 2011/12/18(日)21:56 AAS
>>736
すいません

まず最終的にやりたいことは、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 では現象再現のための最低限の情報だけで質問しました
1-
あと 240 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.007s