go/src/encoding
Joe Tsai 0add9a4dcf encoding/csv: avoid mangling invalid UTF-8 in Writer
In the situation where a quoted field is necessary, avoid processing
each UTF-8 rune one-by-one, which causes mangling of invalid sequences
into utf8.RuneError, causing a loss of information.
Instead, search only for the escaped characters, handle those specially
and copy everything else in between verbatim.

This symmetrically matches the behavior of Reader.

Fixes #24298

Change-Id: I9276f64891084ce8487678f663fad711b4095dbb
Reviewed-on: https://go-review.googlesource.com/99297
Run-TryBot: Joe Tsai <thebrokentoaster@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
2018-03-08 03:26:22 +00:00
..
ascii85 encoding/ascii85: make bigtest big again 2017-06-23 14:28:30 +00:00
asn1 encoding/asn1: allow '&' in PrintableString fields 2017-12-05 18:22:53 +00:00
base32 Revert "go/printer: forbid empty line before first comment in block" 2017-12-01 01:12:26 +00:00
base64 encoding/base64: optimize DecodeString 2017-10-09 15:39:51 +00:00
binary encoding/binary: use an offset instead of slicing 2018-03-06 18:59:03 +00:00
csv encoding/csv: avoid mangling invalid UTF-8 in Writer 2018-03-08 03:26:22 +00:00
gob encoding/gob: avoid race on idToType 2018-01-04 02:17:33 +00:00
hex encoding/hex: fix potential incorrect Dumper output when Close is called multiple times 2018-02-14 03:25:25 +00:00
json encoding/json: apply conventional error handling in decoder 2018-03-03 17:16:47 +00:00
pem encoding/pem: change Encode, EncodeToMemory not to generate partial PEM blocks 2017-12-06 03:59:41 +00:00
xml all: remove duplicate word "the" 2018-02-20 16:45:55 +00:00
encoding.go all: make copyright headers consistent with one space after period 2016-03-01 23:34:33 +00:00