Функция utf8.Valid

Функция utf8.Valid проверяет, является ли переданный срез байт корректно закодированной UTF-8 строкой. Она возвращает true, если все байты в срезе образуют валидную последовательность UTF-8, и false в противном случае. Первым параметром функция принимает срез байт []byte, который необходимо проверить на корректность кодировки.

Синтаксис

goutf8.Valid(data []byte) bool

Пример

Давайте проверим, является ли строка "Hello, 世界" валидной UTF-8 строкой:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  data := []byte("Hello, 世界")
  res := utf8.Valid(data)
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Пример

Давайте проверим, является ли строка с некорректной UTF-8 последовательностью валидной:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  // Некорректная UTF-8 последовательность
  data := []byte{0xff, 0xfe, 0xfd}
  res := utf8.Valid(data)
  fmt.Println(res)
}

Результат выполнения кода:

gofalse

Пример

Давайте проверим, является ли валидной строка, содержащая только ASCII символы:

gopackage main

import (
  "fmt"
  "unicode/utf8"
)

func main() {
  data := []byte("abcde12345")
  res := utf8.Valid(data)
  fmt.Println(res)
}

Результат выполнения кода:

gotrue

Смотрите также

  • функцию utf8.ValidString,
    которая проверяет строку на валидность UTF-8
  • функцию utf8.ValidRune,
    которая проверяет валидность отдельного руна
  • функцию utf8.RuneCount,
    которая подсчитывает количество рун в срезе байт
  • функцию utf8.DecodeRune,
    которая декодирует первый рун из среза байт