Ce face unicode/utf8.ValidString
utf8.ValidString(s) și utf8.Valid(p) returnează true dacă toți octeții formează caractere UTF-8 corecte. Datele citite din fișiere, din rețea sau tăiate greșit pot conține octeți invalizi; verifică-le înainte de a le salva într-o bază de date sau într-un JSON.
utf8.ValidRune(r) spune dacă valoarea numerică r poate fi un caracter Unicode: trebuie să fie între 0 și 0x10FFFF și să nu fie în zona rezervată U+D800–U+DFFF (surrogates).
Pentru a înlocui octeții invalizi, folosește strings.ToValidUTF8.
Parametri
| Parametru | Descriere |
|---|---|
s / p |
Textul sau octeții verificați. |
r |
La ValidRune: valoarea verificată. |
Ce returnează
true sau false.
Exemple
Exemplul 1: Texte valide și invalide
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
fmt.Println(utf8.ValidString("Brașov"))
fmt.Println(utf8.ValidString("Bra\xbaov"))
fmt.Println(utf8.ValidString("Iași"[:3]))
fmt.Println(utf8.Valid([]byte{0xc8, 0x99}))
}
Rezultat
true
false
false
true
Exemplul 2: Valori rune valide
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
for _, r := range []rune{'ș', 0x10FFFF, 0x110000, 0xD800, -1} {
fmt.Printf("%#x valid: %t\n", r, utf8.ValidRune(r))
}
}
Rezultat
0x219 valid: true
0x10ffff valid: true
0x110000 valid: false
0xd800 valid: false
-0x1 valid: false
Greșeli frecvente
- Presupui că orice
stringdin Go este UTF-8 valid. Doar textele scrise în codul sursă sunt; cele construite din octeți arbitrari pot fi invalide.
Comenzi înrudite
strings.ToValidUTF8: Înlocuiește octeții care nu formează UTF-8 valid cu un text la alegere (de exemplu „?” sau „�”).unicode/utf8.RuneCountInString: Numără caracterele (rune) dintr-un text UTF-8; len() numără octeții, iar ă, î, ș, ț ocupă câte 2 octeți.unicode/utf8.FullRune: FullRune verifică dacă octeții încep cu un caracter UTF-8 complet; RuneStart dacă un octet poate fi începutul unui caracter.