oracleからcsv出力した内容を
echo off CD %~dp0 sqlplus ユーザ/パス@xxxx @select.sql
↓select.sql
set echo off set linesize 10000 set trimspool on set feedback off set colsep ',' spool C:\temp\test.csv SELECT ~(ここについて割愛します) DESC; spool off quit
powershellで変換しsyslogへ送る際に
英語であればそのまま記載されますが日本語ですと
必ず文字化けしていまします。
### # Start of Script ## # Define port and target IP address # Random here! $Port = 514 $IP = "xx.xx.xx.xx" $Address = [system.net.IPAddress]::Parse( $IP ) #基本情報の設定 $NEXTDATE = (Get-Date).AddDays(-1) #前日日付 $HOLIDAYFILE = Get-Content C:\temp\holidaylist.txt #祝日(厳密には会社の土日以外の定休日)をリスト化したファイル $HOLIDATE = ($NEXTDATE).ToString("yyyyMMdd") $WEEKDATE = ($NEXTDATE).DayOfWeek ###前営業日になるまで永久ループ do { do { #土日判定 if ( $WEEKDATE -eq "Saturday" ) { $NEXTDATE = $NEXTDATE.AddDays(-1) #土曜日に-1日して金曜日に合わせる $HOLIDATE = ($NEXTDATE).ToString("yyyyMMdd") $WEEKDATE = ($NEXTDATE).DayOfWeek } elseif ( $WEEKDATE -eq "Sunday" ) { $NEXTDATE = $NEXTDATE.AddDays(-2) #日曜日に-2日して金曜日に合わせる $HOLIDATE = ($NEXTDATE).ToString("yyyyMMdd") $WEEKDATE = ($NEXTDATE).DayOfWeek } #祝日判定 $HOLIDAYFILE | ` foreach -Process { if ( $HOLIDATE -eq ( $_ )) { $NEXTDATE = $NEXTDATE.AddDays(-1) #祝日に-1日して前日で再度ループ判定 $HOLIDATE = ($NEXTDATE).ToString("yyyyMMdd") $WEEKDATE = ($NEXTDATE).DayOfWeek } } ` } while ( $WEEKDATE -eq "Sunday") } while ( $WEEKDATE -eq "Saturday") # Create IP Endpoint $End = New-Object System.Net.IPEndPoint $address , $port # Create Socket $Saddrf = [System.Net.Sockets.AddressFamily]::InterNetwork $Stype = [System.Net.Sockets.SocketType]::Dgram $Ptype = [System.Net.Sockets.ProtocolType]::UDP $Sock = New-Object System.Net.Sockets.Socket $saddrf , $stype , $ptype $Sock.TTL = 26 # Connect to socket $sock.Connect( $end ) # Create encoded buffer $Message = (Get-content C:\temp\test.csv) -as [string[]] if ($Message -notmatch "受信年月日 ---------------- $NEXTDATE ") { $Message = '<29> 成功' $Buffer = [System.Text.Encoding]::UTF8.GetBytes($Message) $Sent = $Sock.Send($Buffer) } else { $Message = '<29> 失敗' $Buffer = [System.Text.Encoding]::UTF8.GetBytes($Message) $Sent = $Sock.Send($Buffer) } # End of Script
$Buffer = [System.Text.Encoding]::UTF8.GetBytes($Message)
のutf8の部分を「Default」に変更しても表示される文字は変わりますが
文字化けしてしまいます。
test.csvはshift-jisになります。
csvを直接開くとそのまま日本語が表示されます。
どこか構文がおかしなところがありますでしょうか?
ご教授頂ければ幸いです。
回答1件
あなたの回答
tips
プレビュー