diff --git a/internal/pkg/lib/tsv_codec.go b/internal/pkg/lib/tsv_codec.go index 2320320d0..fabce47c9 100644 --- a/internal/pkg/lib/tsv_codec.go +++ b/internal/pkg/lib/tsv_codec.go @@ -46,22 +46,21 @@ func TSVDecodeField(input string) string { // TSVEncodeField is for the TSV record-writer. func TSVEncodeField(input string) string { var buffer bytes.Buffer - for i := range input { - c := input[i] - if c == '\\' { + for _, r := range input { + if r == '\\' { buffer.WriteByte('\\') buffer.WriteByte('\\') - } else if c == '\n' { + } else if r == '\n' { buffer.WriteByte('\\') buffer.WriteByte('n') - } else if c == '\r' { + } else if r == '\r' { buffer.WriteByte('\\') buffer.WriteByte('r') - } else if c == '\t' { + } else if r == '\t' { buffer.WriteByte('\\') buffer.WriteByte('t') } else { - buffer.WriteByte(c) + buffer.WriteRune(r) } } return buffer.String() diff --git a/test/cases/io-spec-tsv/0003/cmd b/test/cases/io-spec-tsv/0003/cmd new file mode 100644 index 000000000..2819081d3 --- /dev/null +++ b/test/cases/io-spec-tsv/0003/cmd @@ -0,0 +1 @@ +mlr --ijson --otsv cat ${CASEDIR}/data.json diff --git a/test/cases/io-spec-tsv/0003/data.json b/test/cases/io-spec-tsv/0003/data.json new file mode 100644 index 000000000..55dbdbc47 --- /dev/null +++ b/test/cases/io-spec-tsv/0003/data.json @@ -0,0 +1,7 @@ +[ +{ + "alpha": "alpha", + "βετα": "βετα", + "гамма": "гамма" +} +] diff --git a/test/cases/io-spec-tsv/0003/experr b/test/cases/io-spec-tsv/0003/experr new file mode 100644 index 000000000..e69de29bb diff --git a/test/cases/io-spec-tsv/0003/expout b/test/cases/io-spec-tsv/0003/expout new file mode 100644 index 000000000..30d3cbb6a --- /dev/null +++ b/test/cases/io-spec-tsv/0003/expout @@ -0,0 +1,2 @@ +alpha βετα гамма +alpha βετα гамма