pub fn decode_utf16<I>(iter: I) -> DecodeUtf16<I::IntoIter> where I: IntoIterator<Item=u16>
Create an iterator over the UTF-16 encoded code points in iter, returning unpaired surrogates as Errs.
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