std::char::decode_utf16
Function std::char::decode_utf16
pub fn decode_utf16<I>(iter: I) -> DecodeUtf16<<I as IntoIterator>::IntoIter> where I: IntoIterator<Item = u16>,
Create an iterator over the UTF-16 encoded code points in iter
, returning unpaired surrogates as Err
s.
Examples
Basic usage:
use std::char::decode_utf16; fn main() { // ????mus<invalid>ic<invalid> let v = [0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834]; assert_eq!(decode_utf16(v.iter().cloned()) .map(|r| r.map_err(|e| e.unpaired_surrogate())) .collect::<Vec<_>>(), vec![Ok('????'), Ok('m'), Ok('u'), Ok('s'), Err(0xDD1E), Ok('i'), Ok('c'), Err(0xD834)]); }
A lossy decoder can be obtained by replacing Err
results with the replacement character:
use std::char::{decode_utf16, REPLACEMENT_CHARACTER}; fn main() { // ????mus<invalid>ic<invalid> let v = [0xD834, 0xDD1E, 0x006d, 0x0075, 0x0073, 0xDD1E, 0x0069, 0x0063, 0xD834]; assert_eq!(decode_utf16(v.iter().cloned()) .map(|r| r.unwrap_or(REPLACEMENT_CHARACTER)) .collect::<String>(), "????mus�ic�"); }
© 2010 The Rust Project Developers
Licensed under the Apache License, Version 2.0 or the MIT license, at your option.
https://doc.rust-lang.org/std/char/fn.decode_utf16.html