久々に VisualBasic を触っている。
これまで様々な言語で開発をしてきたけど、向いているのか、結構何でも直ぐに出来るようになる。
そういう所もこの仕事を続けてる理由かな。
そんな話はさておき、VBも .NET になってこれまでとは変わってるみたい。
たぶん、これまでのVBばっかりの人はとっつきにくいのかな。
なにしろオブジェクト化されて、Classとか使わなあかんし。
C#とかJavaとかやってたら困らないやろうね。
さて、久々で困ったのがファイル出力。
他のツールのテスト用にDBからデータをCSVファイルに書き出す簡単なプログラムを書く事にした。
普通にファイルを作って、開いて、データを書き込んで閉じるだけのプログラムやけど、簡単すぎて動かしてから問題が発生した。
なんと、普通にファイルを開いただけではエンコードが Unicode(UTF-8)になって、日本語が普通では文字化けしてしまう。
勿論、Unicodeに対応しているエディタ(秀丸とか)だと普通に見れるけど、Shift-JISでないと困るから、さてどないするか。
こんな時に頼りになるのはNet、検索をかけてみたが、どういうわけか今回は空振りが続く。
よっぽど基本的なことなんかな、と思ったけど、空振りの答えも似たレベルが多い。
エンコードの設定から調べなおすとすぐにわかった。
【当初】
Dim sw As StreamWriter = New StreamWriter(filename)
【変更後】
Dim sw As StreamWriter = New StreamWriter(filename,False,System.Text.Encoding.Default)
よく見てもらえれば分かると思うけど、引数を省略したらデフォルト値になる思ってたら、わざわざデフォルト値を引数に入れなあかんかったんです。
正直なところ、OSなり.NETframworkを見るなりして、システムのデフォルト値に合わせられへんのかな?
そんな難しい事やとは思わんねんけど、Microsoftも手抜きしすぎやない?
これまで様々な言語で開発をしてきたけど、向いているのか、結構何でも直ぐに出来るようになる。
そういう所もこの仕事を続けてる理由かな。
そんな話はさておき、VBも .NET になってこれまでとは変わってるみたい。
たぶん、これまでのVBばっかりの人はとっつきにくいのかな。
なにしろオブジェクト化されて、Classとか使わなあかんし。
C#とかJavaとかやってたら困らないやろうね。
さて、久々で困ったのがファイル出力。
他のツールのテスト用にDBからデータをCSVファイルに書き出す簡単なプログラムを書く事にした。
普通にファイルを作って、開いて、データを書き込んで閉じるだけのプログラムやけど、簡単すぎて動かしてから問題が発生した。
なんと、普通にファイルを開いただけではエンコードが Unicode(UTF-8)になって、日本語が普通では文字化けしてしまう。
勿論、Unicodeに対応しているエディタ(秀丸とか)だと普通に見れるけど、Shift-JISでないと困るから、さてどないするか。
こんな時に頼りになるのはNet、検索をかけてみたが、どういうわけか今回は空振りが続く。
よっぽど基本的なことなんかな、と思ったけど、空振りの答えも似たレベルが多い。
エンコードの設定から調べなおすとすぐにわかった。
【当初】
Dim sw As StreamWriter = New StreamWriter(filename)
【変更後】
Dim sw As StreamWriter = New StreamWriter(filename,False,System.Text.Encoding.Default)
よく見てもらえれば分かると思うけど、引数を省略したらデフォルト値になる思ってたら、わざわざデフォルト値を引数に入れなあかんかったんです。
正直なところ、OSなり.NETframworkを見るなりして、システムのデフォルト値に合わせられへんのかな?
そんな難しい事やとは思わんねんけど、Microsoftも手抜きしすぎやない?