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

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

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

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

UTF-8

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

Q&A

解決済

4回答

24100閲覧

Windows10コマンドプロンプトからUTF-8で書き込むには

taro373

総合スコア189

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Unicode

Unicodeはエンコーディングの標準規格です。1つの文字コード体系で多国語の表現を可能にすることを目指して作られています。

UTF-8

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

コマンドプロンプト

コマンドプロンプト(cmd.exe)はMicrosoftによって提供されているコマンドラインインタプリタです。OS/2・Windows CE・Windows NTで使用可能です。

0グッド

0クリップ

投稿2018/11/21 06:59

編集2018/11/21 08:26

WindowsのコマンドプロンプトからUTF-8でファイルに書き込むことは
できないのでしょうか。
コマンドプロンプトから直接実行するとTeraPadでは「Unicode」と
表示されました。
なぜ、バッチファイルからの実行では「SJIS」(日本語があると「UTF-8N」)で
コマンドプロンプトからでは「Unicode」になるのでしょうか。
「バッチファイルを作る」または「UTF-8で書き込めるエディタを使う」
の方法で解決はしています。ただ、しっかりわかっておかないと後々困りそうで
質問しました。

バッチファイルsamplewrite.batを作成し、ファイルに書き込みを
行って、TeraPadで開き文字コードを参照すると「SJIS」と表示されました。

samplewrite.bat

@echo off chcp 65001 echo 1 > sample.txt echo 2 >> sample.txt echo 3 >> sample.txt

実行

PS C:\Users\hoge .\samplewrite.bat

TeraPadでは「SJIS」

set HOGE=ほげ echo %HOGE%>>sample.txt

の2行を追加すると
を行うと、TeraPadでは「UTF-8N」と表示されました。

同様のことをバッチファイルではなく、コマンドプロンプトから
直接実行するとTeraPadでは「Unicode」と表示されます。

PS C:\Users\hogek> chcp 65001 Active code page: 65001 PS C:\Users\hoge> echo 1 > sample2.txt PS C:\Users\hoge> more .\sample2.txt 1 PS C:\Users\hoge> echo 2 >> sample2.txt PS C:\Users\hoge> echo 3 >> sample2.txt PS C:\Users\hoge> more .\sample2.txt 1 2 3

TeraPadでは「Unicode」

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

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

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

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

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

guest

回答4

0

ベストアンサー

powershellとコマンドプロンプトは別物で
powershellではechoWrite-Outputのエイリアスであり
おそらく、>記号がなんらかのコマンドのエイリアスとして実装されているからです。

powershellでUTF-8(BOM有りにはなりますが)で書き込むには

lang

1echo 1 | Set-Content "sample.txt" -Encoding utf8 2echo 2 | Add-Content "sample.txt" -Encoding utf8 3echo 3 | Add-Content "sample.txt" -Encoding utf8 4echo 日本語 | Add-Content "sample.txt" -Encoding utf8

を使います。

投稿2018/11/21 22:36

asm

総合スコア15147

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

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

taro373

2018/11/22 04:47

"powershellとコマンドプロンプトは別物"を知りませんした。 Windws10になってコマンドラインはWindowsPowerShellを起動するのかとの 勘違いでした。WindowsPowerShellで操作をしたいのではなく、コマンドプロンプトで 問題ありません。 今回は Dcoker for Windowsを起動するためにWindowsPowerShellを使い Windows側の操作もWindowsPowerShellで行ったため混乱してしまいました。 ### ファイル名を指定して実行 cmd C:\Users\hoge>echo 1 > f.txt C:\Users\hoge>echo 2 >> f.txt C:\Users\hoge>echo 3 >> f.txt C:\Users\hoge> ### Linux(Docker)で参照 [root@0f668e00ba12 wk]# cat f.txt 1 2 3 ありがとうございました。
guest

0

「PS」の表示を見るにコマンドプロンプトではなくpowershellですね。
バッチファイルとpowershellは別のものですので別の結果になっておかしくありません。
powershellでUTF-8が使えないのかは知りませんが、とりあえず私が試しても確かにUTF-8ではなくUnicodeで出力されました。
(UnicodeとUTF-8・Shift_JISは別物なので誤判定は稀です)

投稿2018/11/21 17:11

ikadzuchi

総合スコア3047

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

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

taro373

2018/11/22 04:50

「コマンドプロンプトではなくpowershell」この違いを久しぶりのWindows環境のため 理解していませんでした。 そもそものところで間違っていて、とんちんかんな質問をしていて恥ずかしく思っています。 ご教示ありがとうございました。
guest

0

TeraPadに聞いてくださいが、一番かと。
(TeraPadの文字コード判定の問題)

正確には、バイナリエディタとかで開いて内部コードを見てみましょう。
多分、判定が微妙なところで TeraPadが期待しない判定を行っただけではないかと思います。

[追記]
今回、作られたファイルですが、どれも 1Kbyteに満たない、サイズです。これで正確なコード判定は難しいと思います。
ちょっと、VS Codeで見たところ、どれも UTF-8 の判定。多分、VS Codeは、UTF-8 を優先しているのかな、と。 (半角英数字だけで、正確な判定は不可能) 別のちょっと古めのエディタでは、かながあるものののみ、UTF-8 判定でした。(ちなみに BATファイルを S-JISで作った場合も UTF-8 なぜ?)
基本が S-JISなのかもしれません。

直接、コマンドラインから、打ち込んだ場合ですが、BATファイルで作成した場合と、バイナリレベルで同じでしょうか? 空白とか、改行とかの相違はないでしょうか? その辺でも違う可能性。
ただ、どちらにしてもこの程度のサイズのファイルでの自動判定は、難しいと思います。

投稿2018/11/21 11:30

編集2018/11/21 13:50
pepperleaf

総合スコア6383

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

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

0

数字とアルファベット(いわゆる半角文字)は、UTF8もShiftJISも全くコードは同じで、双方判別できません。
TeraPADではとりあえずそういうコードをShiftJISと表示してるんでしょう。

投稿2018/11/21 07:03

y_waiwai

総合スコア87719

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

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

taro373

2018/11/21 08:29

質問がわかりにくくて申し訳ありません。(追記しました) 「SJIS」と「UTF-8N」と違いがあることではなく コマンドプロンプトからだと半角文字しか出力していないのに 「Unicode」とTeraPadで表示される理由をお聞きしました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問