Функция from_utf16_lossy
Функция from_utf16_lossy преобразует срез
значений типа u16, представляющих кодовые
единицы UTF-16, в новую строку String.
Параметром функция принимает срез
&[u16]. Если во входных данных встречаются
некорректные последовательности UTF-16, они
заменяются на символ замены U+FFFD.
В отличие от from_utf16, эта функция не
возвращает Result и никогда не завершается
ошибкой.
Синтаксис
String::from_utf16_lossy(v: &[u16]) -> String
Пример
Давайте создадим строку из корректной
последовательности UTF-16, представляющей
текст "abcde":
fn main()
{
let utf16: Vec<u16> = "abcde".encode_utf16().collect();
let res = String::from_utf16_lossy(&utf16);
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте передадим некорректную последовательность UTF-16, содержащую одиночную старшую кодовую единицу без пары:
fn main()
{
let utf16: Vec<u16> = vec![0x0061, 0xD800, 0x0062];
let res = String::from_utf16_lossy(&utf16);
println!("{}", res);
}
Результат выполнения кода:
"a�b"
Пример
Давайте создадим строку из корректной суррогатной пары UTF-16, представляющей символ эмодзи:
fn main()
{
let utf16: Vec<u16> = vec![0xD83D, 0xDE00];
let res = String::from_utf16_lossy(&utf16);
println!("{}", res);
}
Результат выполнения кода:
"😀"
Смотрите также
-
функция
from_utf16,
которая создаёт строку из UTF-16 с проверкой корректности -
функция
from_utf8_lossy,
которая создаёт строку из UTF-8 с заменой некорректных байтов -
функция
from_utf8,
которая создаёт строку из UTF-8 с проверкой корректности -
класс
String,
который представляет изменяемую строку в Rust