Cygwinで文字化け
CygwinでOcamlのインタープリターを起動して、日本語を入力すると、なんか文字化けのようなかんじになった。
# "a" ;;
- : string = "a"# "あ" ;;
- : string = "\227\129\130"
英数字は、そのまま表示される。
日本語は、なんかエスケープされたような表記になっている。
これじゃ、日本語を使った処理ができないね?
http://pllab.is.ocha.ac.jp/~asai/book/Windows.html
日本語の表示の仕方
箇条書き項目OCaml Win 版のトップレベルでは日本語の表示はできません。
未確認ですが、Cygwin のシェル、また Windows のコマンドプロンプトは、漢字コードを SJIS にすれば表示可能という情報を頂いています。
問題の切り分けとして、
という2点を検討してみたい。
「\227\129\130」でGoogle検索したら、意外といろんな情報がたくさんヒットしたw
Unicode/UTF-8-character table - starting from code position 3040
なんか文字の対応表があって、「あ」に対応する背番号が「\227\129\130」ということのようだ。
文字コードに関する知識が必要だな?
文字「あ」は、UTF-8でバイト列「\227\129\130」と割り当てられており、文字ではなくてバイト列が表示されてしまっていたようだ。
バイト列って何さ?
自分の希望としては、「\227\129\130」と表示されてしまうところを「あ」と表示して欲しいんだけど、そのために必要な設定が何か?どこをいじればいいのか?という情報が欲しい。
あーあ、こういう細かいところで時間を取られるのは嫌だな~。
まあ、でも文字コードに関する知識、理解を深めることができたら、それは利益だと考えて、前向きに取り組んで解決したい。
(参考)
http://www.cis.twcu.ac.jp/~osada/c_prog1/cygwin.html
ここの説明で「$ export LANG=ja_JP.SJIS」をやってみたけど、ocamlインタープリター内では相変わらず文字化けっぽい状態だった。
どうやら、cygwinで日本語を扱う環境がなく、日本語フォントを入れると解決するらしい?のだが、そのために「gnupack」というツールでcygwinをインストールすれば、簡単に日本語の対策がなされるっぽい。
もう1回やり直すのは面倒だし、何とか他の方法で日本語表示を変えたい。
粘ってダメだったら、gnupackを検討してみよう。。。
Cygwin のフォントを Consolas + Meiryo UI に変更する | マスクメロン
Cygwinで使用する日本語フォントを変える方法を見てみたが、問題の切り分けとして、これは関係ないような気がする。
Windowsのレジストリーをいじるまでしなきゃいけないのは、何か違うと思う。
(もしそうだとして、そこまでやるつもりはない。日本語なしでOCamlを練習しても良いw)
解決策発見!
Googleで検索キーワードを変えたら、解決策に出会えた!!!
cygwin ocaml 日本語 文字化け - Google 検索
↓
let print_non_escaped_string ppf = Format.fprintf ppf "\"%s\"";; #install_printer print_non_escaped_string;;という2行を .ocamlinitとしてホームディレクトリに置いたら、インタプリタでも日本語が普通に出力されるようになった。
この通りにやったら、Cygwin上のOCamlインタープリターで日本語の文字化けが治りました!
有益な情報提供、どうもありがとうございます。