Golang で書き込むファイルの文字コードは LF 固定であるということ(CRLF はサポートしていない)
Python の時はちゃんと CRLF で書いてくれていたが、Golang だと LF 固定になる模様。Go 公式も「CRLF はサポートしない」と結論を出している。
試したコード
func list2file(filepath string, lines []string) { fp, err := os.Create(filepath) if err != nil { abort(err.Error()) } defer fp.Close() writer := bufio.NewWriter(fp) for _, line := range lines { writer.WriteString(line + "\n") } writer.Flush() }
CRLF をサポートしない、の根拠は?
Go の GitHub リポジトリ。
上記 Issue で色々議論されいるが、mattn さんの発言がわかりやすい。
- issuecomment-439251733
- クロスプラットフォームアプリつくってる時に CRLF のせいで苦労してる
- Golang は移植性が強いのにもったいない
- Win10 の notepad も LF 対応したよ
- issuecomment-441442408
んで、一番最後らへんに
We aren't going to do this, so closing.
と結論が出されて close されてる。