前提・実現したいこと
Windows10環境です。
Go言語で書いたスクリプトの出力をPowershell経由でテキストに書き出すと、日本語が文字化けします。
スクリプトの内容は、
コマンドプロンプトのTreeコマンドのように、指定ディレクトリ内のファイル名を列挙していくものです。
WindowsのPowershellから下記のコマンドで実行すると、書き出されたテキストファイルで日本語が文字化けします。
go run "tree.go" . > _tree.txt
utf16LittleEndianで書き出されます。
でも、単にPowershellのウィンドウに結果を表示するだけなら、文字化けしません。
Powershellの$OutputEncoding は US-ASCII です。
また、Dosのコマンドプロンプトから実行すると、化けません。utf8で書き出されます。
コマンドプロンプトは、コード ページ: 932
goのスクリプトファイルのテキストエンコーディングは、utf8 です。
日本語が文字化けしないように書き出す方法をご教授ください。
よろしくお願いします。
発生している問題
// 日本語の文字化け Abstract 54444_繝輔Λ繝・す繝・繝峨ヮ繧、繧コL_RT.jpg 54444_繝輔Λ繝・す繝・繝峨ヮ繧、繧コM_RT.jpg 54568_繝「繝弱ヨ繝シ繝ウ繝舌Φ繝悶・D_RT.jpg 54568_繝「繝弱ヨ繝シ繝ウ繝舌Φ繝悶・L_RT.jpg 54595_繧ウ繝シ繝繝ゥ繧、繝ウD_RT.jpg 54595_繧ウ繝シ繝繝ゥ繧、繝ウL_RT.jpg 54595_繧ウ繝シ繝繝ゥ繧、繝ウM_RT.jpg 54624_繧ォ繝・ユ繧、繝ウ繧ー繧ィ繝ウ繝懊せD_RT.jpg 54624_繧ォ繝・ユ繧、繝ウ繧ー繧ィ繝ウ繝懊せL_RT.jpg 54624_繧ォ繝・ユ繧、繝ウ繧ー繧ィ繝ウ繝懊せM_RT.jpg 54625_繝槭・繝悶Ν繝輔Ο繧ヲD_RT.jpg 54625_繝槭・繝悶Ν繝輔Ο繧ヲL_RT.jpg 54625_繝槭・繝悶Ν繝輔Ο繧ヲM_RT.jpg
該当のソースコード
Golang
1 2package main 3 4import ( 5 "fmt" 6 "os" 7 "path/filepath" 8) 9 10func tree(_path string, level int) { 11 pattern := _path + "/*" 12 files, err := filepath.Glob(pattern) 13 if err != nil { 14 panic(err) 15 } 16 17 for _, f := range files { 18 tab := "" 19 20 for i := 0; i < level; i++ { 21 tab += "\t" 22 } 23 24 fileInfo, _ := os.Stat(f) 25 fmt.Printf("%s%s\n", tab, filepath.Base(f)) 26 27 if fileInfo.IsDir() { 28 tree(f, level+1) 29 } 30 } 31} 32 33func main() { 34 if len(os.Args) == 2 { 35 targetDir := os.Args[1] 36 tree(targetDir, 0) 37 } 38} 39 40
試したこと
Powershellでテキストエンコーディングを指定しても文字化けします。
| Out-File $outfile -Encoding UTF8
$OutputEncoding = [Console]::OutputEncoding go run "C:\Users\Takeharu\go\src\my_projects\tree0.go" . | Out-File _tree2.txt -Encoding UTF8
補足情報(FW/ツールのバージョンなど)
Windows10
go1.12.7 windows/amd64
PSVersion 5.1.17763.592
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/27 10:39
2019/07/27 10:45
2019/07/27 22:30
2019/07/27 22:33 編集
2019/07/28 04:59
2019/07/28 05:02
2019/07/28 05:17
2019/07/28 09:08
2019/07/29 04:05