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 Errs.

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

在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号

意见反馈
返回顶部