]> Cypherpunks repositories - gostls13.git/commitdiff
fmt, strconv: document use of Unicode replacement character in %q
authorRuss Cox <rsc@golang.org>
Tue, 8 Mar 2022 14:51:29 +0000 (09:51 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 16 Mar 2022 16:28:38 +0000 (16:28 +0000)
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>

src/fmt/doc.go
src/strconv/quote.go

index f14a7a73e335b6067fa6182bd61803621347fdca..6b49deda87000812e98b467cc430967674be19a2 100644 (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
 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:
        +       always print a sign for numeric values;
                guarantee ASCII-only output for %q (%+q)
index d2814b92da795b77ceb1a4757748cf7d25ca6ea2..9d20b75a58afb94d14a376a7a28c20177c287e21 100644 (file)
@@ -165,6 +165,8 @@ func AppendQuoteToGraphic(dst []byte, s string) []byte {
 // QuoteRune returns a single-quoted Go character literal representing the
 // rune. The returned string uses Go escape sequences (\t, \n, \xFF, \u0100)
 // 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 {
        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,
 // \u0100) for non-ASCII 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 QuoteRuneToASCII(r rune) string {
        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,
 // as defined by IsGraphic, the returned string will use a Go escape sequence
 // (\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 {
        return quoteRuneWith(r, '\'', false, true)
 }