質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

Q&A

解決済

1回答

6398閲覧

日本語のみ文字化けする事象について

yamato_0410

総合スコア36

CSV

CSV(Comma-Separated Values)はコンマで区切られた明白なテキスト値のリストです。もしくは、そのフォーマットでひとつ以上のリストを含むファイルを指します。

Oracle

Oracleは、米オラクルが取り扱うリレーショナルデータベース管理システムです。メインフレームからPCまで、多様なプラットフォームに対応しています。

Linux

Linuxは、Unixをベースにして開発されたオペレーティングシステムです。日本では「リナックス」と呼ばれています。 主にWebサーバやDNSサーバ、イントラネットなどのサーバ用OSとして利用されています。 上位500のスーパーコンピュータの90%以上はLinuxを使用しています。 携帯端末用のプラットフォームAndroidは、Linuxカーネル上に構築されています。

UTF-8

UTF-8は8ビット符号単位の文字符号化形式及び文字符号化スキームです。データ交換方式、ファイル形式としては、一般的にUTF-8が使われる傾向があります。

PowerShell

Windows PowerShellはコマンドラインインターフェースであり、システム管理を含むWindowsタスク自動化のためのスクリプト言語です。

0グッド

0クリップ

投稿2018/11/05 10:56

編集2018/11/07 06:13

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を直接開くとそのまま日本語が表示されます。

どこか構文がおかしなところがありますでしょうか?
ご教授頂ければ幸いです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takasima20

2018/11/05 11:34

まずは「どこまで」文字化けしてないかを確認しましょう。ちなみに GetBytes っているの?
kaba

2018/11/05 13:05

C:\temp\test.csvのファイルのエンコーディングを確認してください
yamato_0410

2018/11/05 23:57

WindowsのOS上でcsvファイルを開くと文字化けはしておりません。GetBytesについては外したらなぜかsyslogへ記載がされませんでした。また、test.csvファイルのエンコードを確認したところ、shift-gisでした。
ikadzuchi

2018/11/06 00:52

文字化け前後の文字列を教えてください。
yamato_0410

2018/11/06 01:19

すみません、文字化け前後の文字列とはどういうことでしょうか?
ikadzuchi

2018/11/06 01:22

あ、化ける前の正しい文字列と、化けた後の文字列というつもりで言いました。
yamato_0410

2018/11/06 01:37

化ける前は成功or失敗のどちらかを記載したく、UTF8で送ろうとすると聽という文字になりshiftgisで送ろうとすると¥「 . 」のような形になります。
guest

回答1

0

自己解決

Tera Termの文字コードの設定が「EUC」になっており、「UTF8」に変更したところ、文字化けが解消されました。お手数おかけしました。

投稿2018/11/07 06:32

yamato_0410

総合スコア36

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問