F# はまだ多言語対応じゃなかった…泣ける
日本語の文字列を表示させると、文字が化け化け…うあーん…
もうそろそろ多言語対応にしてもよくない? いあ、そろそろしないとやばくない?
せめてUTF-8ぐらいを標準にしてほしいよー!
-----------------------
.NETのクラスを使ってファイルから読み込んで表示する分には正常
ソースファイルに直接書いたものは化ける(はて? F#標準の文字コードがASCII設定とか?)
-----------------------
正常にSHIFT-JISの文字を表示できた!!
けれど、わざわざ文字コードを指定してやらないとダメらしい(当たり前?)
・SHIFT-JISの文字列を bytestring という値、つまり byte [] と定義する
・Encoding.Default.GetString(???) で string にして表示
let strb = "表示する"B
let shiftjis = Encoding.Default.GetString(strb)
printf "%s" shiftjis
マニュアルによると「bytestring := stringB」らしい。確かにその通りでした(^-^
こうするものだと言われるとそうなのかもしれないけど、使う側からすればこの程度は言語側で吸収してほしい
おそらく現在のF#では
・string の値が与えられる (ソース上で)
・Encoding.Default.GetBytes(string) にて byte [] へ変換
・Encoding.Default.GetString(byte []) にて Default文字コードの string へ変換
・変換結果を文字列として扱う
という感じになっているような気がする。(どこかの時点でね)
ここで問題なのが、Encoding.Default.GetBytes()
なぜか、これを通すと正常なバイトデータが歪められる(^^;;
結果として文字化けのように表示されてしまう
試すとわかりますが、
"文字列を用意してそれを表示した場合" と "文字列にGetBytes()を使用した場合" の結果は同じになります。
結局現在のところ、ソースに書かれた2バイト文字はそのままでは正常に表示できない。
うーん、どうなんだろ これw
# OCamlで「表示する」という文字列は、工夫しないとうまく表示されないそうです
0 Comments:
Post a Comment
<< Home