@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

SHIFT-JIS変換について

投稿者投稿内容
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-09-18 17:47
こんにちは、お世話になります。

現在、VB.NETで開発をしています。
テーブルのデータを
CSVにデータを出力するシステムを作成中です。

'-----------------------------
Private Sub cmdWriteCSV_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles cmdWriteCSV.Click

Dim wkSQL As String
Dim connStr As String = "data source = \SDCard\BTRS\DB\Common.sdf;"
Dim conn As SqlCeConnection = Nothing
Dim cmd As SqlCeCommand

Dim DbOpen As New Class1
DbOpen.M_dbopen_s(connStr, conn, cmd)

'CSV形式ファイルパスを設定する
Dim objFile As New StreamWriter("\SDCard\BTRS\Syuturyoku.csv")
Dim strTemp As String

Try
'テーブルの内容をCSVに出力する
wkSQL = ""
wkSQL = wkSQL & " SELECT * "
wkSQL = wkSQL & " FROM thMST_MENU "
wkSQL = wkSQL & " ORDER BY Menu_PageNO " 'ページ番号
wkSQL = wkSQL & " , Menu_LocationNO " 'メニュー表示位置
cmd.CommandText = wkSQL

Dim rdr As SqlCeDataReader = cmd.ExecuteReader

Do While rdr.Read()
'データを書き込む
Dim wk1 As String : Dim wk2 As String : Dim wk3 As String : Dim wk4 As String : Dim wk5 As String : Dim wk6 As String : Dim wk7 As String
If IsDBNull(rdr("Menu_PageNO")) Then wk1 = "" Else wk1 = rdr("Menu_PageNO")
If IsDBNull(rdr("Menu_LocationNO")) Then wk2 = "" Else wk2 = rdr("Menu_LocationNO")
If IsDBNull(rdr("Menu_Title")) Then wk3 = "" Else wk3 = rdr("Menu_Title")
If IsDBNull(rdr("Menu_LblFlg")) Then wk4 = "" Else wk4 = rdr("Menu_LblFlg")
If IsDBNull(rdr("Menu_ExeName")) Then wk5 = "" Else wk5 = rdr("Menu_ExeName")
If IsDBNull(rdr("Menu_PasswordFlg")) Then wk6 = "" Else wk6 = rdr("Menu_PasswordFlg")
If IsDBNull(rdr("Menu_Option")) Then wk7 = "" Else wk7 = rdr("Menu_Option")
strTemp = wk1 + "," + wk2 + "," + wk3 + "," + wk4 + "," + wk5 + "," + wk6 + "," + wk7

'結果を表示
objFile.WriteLine(strTemp)
Loop
objFile.Close() 'ファイルのクローズ
rdr.Close()

MsgBox("CSV出力が終了しました。")

Catch ex As SqlCeException
showerrors(ex)

Finally
conn.Close()
End Try

End Sub
'-----------------------------

テーブルのデータに日本語が混ざっていた場合、
出力されたCSVのデータが文字化けしてしまうのですが、
どうすればSHIFT-JISに変換できるのかご教授ください。
よろしくお願いします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-09-18 17:53
StreamWriter(String, Boolean, Encoding)は?
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-09-18 17:56
Dim objFile As New StreamWriter("\SDCard\BTRS\Syuturyoku.csv", True, "SHIFT-JIS")
と記述すればいいのですか?
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-09-18 18:01
Dim objFile As New StreamWriter("\SDCard\BTRS\Syuturyoku.csv", True, "SHIFT-JIS")
と記述したときに、

objFile に波線が引かれて
『これらの引数で呼び出される、アクセス可能な 'New' がないため、オーバーロードの解決に失敗しました :
'Public Sub New(path As String, append As Boolean, encoding As System.Text.Encoding)': 型 'String' の値を 'System.Text.Encoding' に変換できません。
'Public Sub New(stream As System.IO.Stream, encoding As System.Text.Encoding, bufferSize As Integer)': 型 'String' の値を 'System.IO.Stream' に変換できません。
'Public Sub New(stream As System.IO.Stream, encoding As System.Text.Encoding, bufferSize As Integer)': 型 'Boolean' の値を 'System.Text.Encoding' に変換できません。

というエラーが出ます
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-18 18:10
引用:

Dim objFile As New StreamWriter("SDCardBTRSSyuturyoku.csv", True, "SHIFT-JIS")



宣言時にNewはいらないです。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2003-09-18 18:11
引用:

はなももさんの書き込み (2003-09-18 18:01) より:
Dim objFile As New StreamWriter("SDCardBTRSSyuturyoku.csv", True, "SHIFT-JIS")


"SHIFT-JIS"という文字列は、Encodingクラスではないのですから、
引用:

'Public Sub New(path As String, append As Boolean, encoding As System.Text.Encoding)': 型 'String' の値を 'System.Text.Encoding' に変換できません。


と出るのが当然です。
System.Text.Encodingを調べてください。
Encodingの使い方がわからなければ、(「シフトJIS」と合わせて)この会議室を検索してください。

…ところで、第2引数が True なのは何故?

なんか、第2引数といい、第3引数といい、
引用:

ぢゃん♪の書き込み (2003-09-18 17:53) より:
StreamWriter(String, Boolean, Encoding)は?


のリンク先を読んでいるという気がしないのですが……。


[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2003-09-18 18:18 ]
まゆりん
ぬし
会議室デビュー日: 2002/08/12
投稿数: 539
お住まい・勤務地: よこはま
投稿日時: 2003-09-18 18:17
途中で送信してしまいました(汗)。
ぢゃん♪さんが教えてくれたヘルプをご覧になりましたか?
そこのサンプルを参考にしてみてください。
はなもも
会議室デビュー日: 2003/09/10
投稿数: 12
投稿日時: 2003-09-18 18:37
ヘルプがあったんですね。
よんでいませんでした
すみません。参考にしてみます

スキルアップ/キャリアアップ(JOB@IT)