Функция utf8.EncodeRune
Функция utf8.EncodeRune из пакета unicode/utf8
записывает UTF-8 представление переданной руны в слайс байт.
Первый параметр функции — это слайс байт, в который будет записан результат.
Второй параметр — это руна, которую нужно закодировать.
Функция возвращает количество байт, которые были записаны в слайс.
Важно: слайс должен иметь достаточную емкость для записи UTF-8 представления руны (максимум 4 байта).
Синтаксис
utf8.EncodeRune([]byte, rune)
Пример
Давайте закодируем простую латинскую руну 'A':
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
buf := make([]byte, 4)
n := utf8.EncodeRune(buf, 'A')
fmt.Printf("bytes: %v, count: %d\n", buf[:n], n)
}
Результат выполнения кода:
"bytes: [65], count: 1"
Пример
Теперь закодируем кириллическую руну 'Я':
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
buf := make([]byte, 4)
n := utf8.EncodeRune(buf, 'Я')
fmt.Printf("bytes: %v, count: %d\n", buf[:n], n)
}
Результат выполнения кода:
"bytes: [208 175], count: 2"
Пример
Закодируем руну, которая занимает 4 байта:
package main
import (
"fmt"
"unicode/utf8"
)
func main() {
buf := make([]byte, 4)
n := utf8.EncodeRune(buf, '😀')
fmt.Printf("bytes: %v, count: %d\n", buf[:n], n)
}
Результат выполнения кода:
"bytes: [240 159 152 128], count: 4"
Смотрите также
-
функцию
utf8.DecodeRune,
которая декодирует первую руну из слайса байт -
функцию
utf8.DecodeRuneInString,
которая декодирует первую руну из строки -
функцию
utf8.RuneLen,
которая возвращает количество байт, необходимое для кодирования руны -
функцию
utf8.RuneCount,
которая подсчитывает количество рун в слайсе байт