日次バッチで出力後のCSVファイルについて、文字コードをUTF-8(BOMなし)に変換したいのですが、
出力内容に日本語が含まれない場合、以下のコマンドだけでは変換できないようです。

<現状使用しているコマンド>
start /min /wait cmd /c chcp 65001 ^& cmd /c type c:\hoge\hoge_uni.csv > c:\hoge\hoge.csv
del /Q c:\hoge\hoge_uni.csv

お客様に相談したところ、ファイル出力の際に日本語を追加して
文字コード変換後に日本語を削除できないか、とのことでしたが
当方がコマンドに詳しくなく、解決策がありましたらご教授頂けないでしょうか?

このQ&Aに関連する最新のQ&A

A 回答 (4件)

Unicode のコードポイント 0~127 は ASCII と全く同じ文字をコードし, かつ UTF-8 はその範囲のコードポイントをその値そのものの 1バイトで表しますから, #1 でいわれているように「いわゆるASCIIのみ」であれば BOM なしの UTF-8 と全く同じになります. つまり「変換」してもなにも変化しません.



「変換後にSJISファイルになっていて」というのはどうやって確かめているんでしょうか?
    • good
    • 1
この回答へのお礼

コメントありがとうございます。

>「変換後にSJISファイルになっていて」というのはどうやって確かめているんでしょうか?

サクラエディタで開き
右下に表示される文字コードを確認していました。

丁寧なご説明ありがとうございます。納得です。
お客様に納得して頂ければ、今のままでリリースできるかもしれません
本当に助かりました、ありがとうございました!

お礼日時:2016/08/27 08:36

たぶん文字コード自動判定に掛けてShift_JISと出たということでしょうね。


問題無いです。
ASCII文字しか含まないファイルはBOM無しUTF-8でもありShift_JISでもあるので、判定はそうなっておかしくありません。
    • good
    • 0
この回答へのお礼

コメントありがとうございます。
文字コード上全く同じ状態ということなのですね。

ご指摘のとおり、今のままで問題なさそうです
ご助力ありがとうございました。

お礼日時:2016/08/27 08:39

>出力内容が英数字のみの場合という意味です。



いわゆるASCIIのみ…ってことでしょうかね?
だったら、ASCIIのみのファイルとBOMなしUTF-8のファイルって同一のような気がしますけど。
    • good
    • 0
この回答へのお礼

コメントありがとうございます。

>だったら、ASCIIのみのファイルとBOMなしUTF-8のファイルって同一のような気がしますけど。

自分の理解度が足りず非常に申し訳ないのですが
同一とはどういうことなのでしょうか?

現状は変換後にSJISファイルになっていて
お客様からは、UTF-8形式での出力を求められています。

お礼日時:2016/08/26 16:00

可能なら「日次バッチ」で CSV を出力する時点で文字コードを UTF-8(BOMなし)にするのが正解だとは思うけど....



確認ですが「出力内容に日本語が含まれない場合」というのは, 例えば「日本語は含まれないけど中国語が含まれる」とかいうことでしょうか?
    • good
    • 0
この回答へのお礼

コメントありがとうございます。

>確認ですが「出力内容に日本語が含まれない場合」というのは, 例えば「日>本語は含まれないけど中国語が含まれる」とかいうことでしょうか?

申し訳ありません、記載が曖昧でした。
出力内容が英数字のみの場合という意味です。

お礼日時:2016/08/26 14:59

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

QC:\Windows> から C:\Windows\Win98>への変更方法

次のMS DOSプロンプトの状態から
C:\Windows>

次のMS DOSプロンプトの状態にしたい。
C:\Windows\Win98>

色々試して見ましたがうまくいきませんので、教えてください。テストした結果は以下の通りです。

C:\Windows> CD \   と入力してEnterします
C:\>CD C:\Windows\Win98  と入力してEnterします

ディレクトリーの指定が違いますと、表示されてうまくいきません。

Aベストアンサー

>C:\>CD C:\Windows\Win98  と入力してEnterします

↑で別に間違ってはいないので、"C:\WINDOWS\win98"ディレクトリが存在しないのでは?

dir c:\windows\win98

で確認してみた方が良いと思います。

Qコマンドプロンプト標準出力とファイル出力両方

お世話になってます

コマンドプロンプトで
echo "こんにちは"
とするとプロンプトに
こんにちは
と書き込まれます。
echo "こんにちは" >> file.txt
とするとfile.txtに
こんにちは
と書き込まれます。

では、1行で
プロンプトとfile.txtの両方に
こんにちは
と書き込むことは出来ますか?

file.txtは上書きではなく、追記で行いたく思ってます。

よろしくお願いします。

Aベストアンサー

残念ながらそのような機能は無いはずです。

ので、少し面倒臭いですが自分で作りましょう。

バッチファイル内で行う場合、
-----
Call :echoEx こんにちは
Exit

:echoEx
echo %*
echo %*>>file.txt
Exit /b 0
-----
この:echoExというサブルーチンが画面とファイルに出力する部分です。
echoコマンドの代わりにCall :echoExを呼んで使います。

echo こんにちは

Call :echoEx こんにちは


コマンドプロンプト上で手打ちの時であれば、似たようなバッチファイルをつくりましょう。
例えば echoEx.batという名前で
-----
echo %*
echo %*>>file.txt
Exit /b 0
-----
のようなバッチファイルを作成し、
echoコマンドの代わりにechoEx.batをコールして使います。

echo こんにちは

echoEx.bat こんにちは

Qruby "\001\376".unpack("C*") => [1, 254]の意味

"\001\376".unpack("C*") => [1, 254] の
[1, 254]ってどういう数字を意味するのですか?8ビット整数なのに配列で結果が出ていることの意味がわかりません。ご教授ください。

Aベストアンサー

"\001\376"
は、バイナリ文字列で
"C*"

バイトとして数値を取り出し配列にする
ということだと思います。
\376は、8進数で、10進にすると254になります。
見当違いだったらすみません。

QCocoa+Objective-Cで、CSV出力をする方法

Objectが持っているNSStringの内容をCSV(またはただのTEXT形式)でファイルに保存する方法どなたかご存じないですか?

Aベストアンサー

セーブ・パネルはNSSavePanelクラスというのがあります。
- - - - - - - - - - - - - - - - - - - -
NSString *wantSave = @"test"; // 保存したい文字列

NSSavePanel *panel = [NSSavePanel savePanel];
// セーブ・パネルを取得
[panel runModal]; // セーブ・パネルを表示
[wantSave writeToFile:[panel filename] atomically:YES];
// 指定したパスに保存
- - - - - - - - - - - - - - - - - - - -
やりたいことはこのような感じでしょうか?
NSSavePanelは他にもいろいろ設定できるので、APIドキュメント(英語)を参考にしてみてください。

QDOSプロンプト(cmd.exe)の標準出力ログ出力方法 (gpgコマンド)

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)


2. gpg復号化 + 署名 検証成功時のログ
次のユーザーの秘密鍵のロックを解除するには
パスフレーズがいります:“test <gpg.test@test.co.jp>”
2048ビットRSA鍵, ID FFFFFF作成日付は2014-01-01 (主鍵ID 12345678)

gpg: 2048-ビットRSA鍵, ID 876543211, 日付2012-01-23に暗号化されました
“public.player <public@test.co.jp>”
gpg: 2014-01-01 02:01:11にRSA鍵ID 12345678で施された署名
gpg: “test <gpg.test@test.co.jp>”からの正しい署名

DOSプロンプトにてgpgコマンドを実行した際のログ
を出力させようとしています。

リダイレクトを使用しても、ファイルに書き出されません。
(もちろん画面コピーしてから貼り付ければ可能ですが自動化したいです)

gpgコマンドが標準出力へ出力するログは、ファイルに書き出すことは
出来ないでしょうか?

/*****************************************
(例):GPGコマンドが出力するログ(保存したいログ)
*****************************************/
1. gpg暗号化 + 署名 成功時のログ
次のユーザ...続きを読む

Aベストアンサー

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異なってしまいますが。
CreateProcess()のlpStartupInfo.hStdOutputとlpStartupInfo.hStdErrorに同じハンドル渡せば一緒に取れる…か?
https://msdn.microsoft.com/en-us/library/windows/desktop/ms686331%28v=vs.85%29.aspx

パイプに変更してWindows版のteeコマンドで…でも失敗しますし…。

>なぜ出ないんでしょ...Wr5さんのPC環境ではgpgコマンドに対する
>リダイレクトに成功しますか?

失敗しますね……。
gpgのソースまでは確認していませんが…リダイレクトを強制的に外している…んでしょうかねぇ……

cmd.exeが妙な挙動をしている。という可能性もあるにはありますが…。

フロントエンド的なプログラム作って、stdoutとstderrをパイプで受け取れるようにしてみないと判らない…でしょうかね。
もっとも、その場合でも別々に出力されるのでコマンド プロンプトの画面に表示される状況とは異な...続きを読む


このQ&Aを見た人がよく見るQ&A

人気Q&Aランキング

おすすめ情報