らくがき

2008/03/05

F# はまだ多言語対応じゃなかった

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