1
0
mirror of https://github.com/golang/go synced 2024-11-23 19:00:04 -07:00

fmt, strconv: document use of Unicode replacement character in %q

Fixes #51526.

Change-Id: I365a763454bd201f804df29f800416b1731b8ebc
Reviewed-on: https://go-review.googlesource.com/c/go/+/390436
Trust: Russ Cox <rsc@golang.org>
Run-TryBot: Russ Cox <rsc@golang.org>
Reviewed-by: Rob Pike <r@golang.org>
TryBot-Result: Gopher Robot <gobot@golang.org>
This commit is contained in:
Russ Cox 2022-03-08 09:51:29 -05:00
parent 33e752edd3
commit 3efc7215cb
2 changed files with 10 additions and 0 deletions

View File

@ -110,6 +110,10 @@ For complex numbers, the width and precision apply to the two
components independently and the result is parenthesized, so %f applied components independently and the result is parenthesized, so %f applied
to 1.2+3.4i produces (1.200000+3.400000i). to 1.2+3.4i produces (1.200000+3.400000i).
When formatting a single integer code point or a rune string (type []rune)
with %q, invalid Unicode code points are changed to the Unicode replacement
character, U+FFFD, as in strconv.QuoteRune.
Other flags: Other flags:
+ always print a sign for numeric values; + always print a sign for numeric values;
guarantee ASCII-only output for %q (%+q) guarantee ASCII-only output for %q (%+q)

View File

@ -165,6 +165,8 @@ func AppendQuoteToGraphic(dst []byte, s string) []byte {
// QuoteRune returns a single-quoted Go character literal representing the // QuoteRune returns a single-quoted Go character literal representing the
// rune. The returned string uses Go escape sequences (\t, \n, \xFF, \u0100) // rune. The returned string uses Go escape sequences (\t, \n, \xFF, \u0100)
// for control characters and non-printable characters as defined by IsPrint. // for control characters and non-printable characters as defined by IsPrint.
// If r is not a valid Unicode code point, it is interpreted as the Unicode
// replacement character U+FFFD.
func QuoteRune(r rune) string { func QuoteRune(r rune) string {
return quoteRuneWith(r, '\'', false, false) return quoteRuneWith(r, '\'', false, false)
} }
@ -179,6 +181,8 @@ func AppendQuoteRune(dst []byte, r rune) []byte {
// the rune. The returned string uses Go escape sequences (\t, \n, \xFF, // the rune. The returned string uses Go escape sequences (\t, \n, \xFF,
// \u0100) for non-ASCII characters and non-printable characters as defined // \u0100) for non-ASCII characters and non-printable characters as defined
// by IsPrint. // by IsPrint.
// If r is not a valid Unicode code point, it is interpreted as the Unicode
// replacement character U+FFFD.
func QuoteRuneToASCII(r rune) string { func QuoteRuneToASCII(r rune) string {
return quoteRuneWith(r, '\'', true, false) return quoteRuneWith(r, '\'', true, false)
} }
@ -193,6 +197,8 @@ func AppendQuoteRuneToASCII(dst []byte, r rune) []byte {
// the rune. If the rune is not a Unicode graphic character, // the rune. If the rune is not a Unicode graphic character,
// as defined by IsGraphic, the returned string will use a Go escape sequence // as defined by IsGraphic, the returned string will use a Go escape sequence
// (\t, \n, \xFF, \u0100). // (\t, \n, \xFF, \u0100).
// If r is not a valid Unicode code point, it is interpreted as the Unicode
// replacement character U+FFFD.
func QuoteRuneToGraphic(r rune) string { func QuoteRuneToGraphic(r rune) string {
return quoteRuneWith(r, '\'', false, true) return quoteRuneWith(r, '\'', false, true)
} }