РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
207 of 1245 menu

Функция from_utf16

Функция from_utf16 создаёт новую строку String из среза кодовых единиц UTF-16. Параметром функция принимает срез &[u16] - последовательность 16-битных значений. Функция возвращает Result<String, FromUtf16Error>: при успешном преобразовании - строку String, а если входные данные содержат некорректную последовательность UTF-16 (например, одиночный суррогат) - ошибку.

Синтаксис

String::from_utf16(v: &[u16]) -> Result<String, FromUtf16Error>

Пример

Давайте преобразуем срез кодовых единиц UTF-16 в строку:

fn main() { let utf16: Vec<u16> = vec![0x0061, 0x0062, 0x0063, 0x0064, 0x0065]; let res = String::from_utf16(&utf16); println!("{:?}", res); }

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

Ok("abcde")

Пример

Давайте преобразуем срез с кириллическими символами:

fn main() { let utf16: Vec<u16> = vec![0x041F, 0x0440, 0x0438, 0x0432, 0x0435, 0x0442]; let res = String::from_utf16(&utf16); println!("{:?}", res); }

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

Ok("Привет")

Пример

Давайте попробуем преобразовать срез с одиночным суррогатом, который является некорректной последовательностью UTF-16:

fn main() { let utf16: Vec<u16> = vec![0xD800]; let res = String::from_utf16(&utf16); println!("{:?}", res); }

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

Err(FromUtf16Error(()))

Пример

Давайте корректно обработаем результат преобразования с помощью match:

fn main() { let utf16: Vec<u16> = vec![0x0031, 0x0032, 0x0033, 0x0034, 0x0035]; match String::from_utf16(&utf16) { Ok(s) => println!("Ok: {}", s), Err(e) => println!("Err: {:?}", e), } }

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

Ok: 12345

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

  • класс String,
    который представляет собой UTF-8 строку
  • функция from_utf16_lossy,
    которая преобразует UTF-16 с заменой некорректных символов
  • функция from_utf8,
    которая создаёт строку из среза байтов UTF-8
  • функция from_utf8_lossy,
    которая преобразует UTF-8 с заменой некорректных байтов
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить