在 Rust 中,你可以使用 std::str 和 std::char 模块中的函数来编码和解码 UTF-16 字符串。
下面是一个示例,展示了如何将一个 Rust 字符串编码为 UTF-16 字节序列,然后将其解码为 Rust 字符串:
use std::str;
use std::char;
fn main() {
// 将 Rust 字符串编码为 UTF-16 字节序列
let s = "你好,世界!";
let utf16: Vec<u16> = s.encode_utf16().collect();
// 将 UTF-16 字节序列解码为 Rust 字符串
let r = match str::from_utf16(&utf16) {
Ok(s) => s,
Err(e) => panic!("无法解码字符串: {}", e),
};
assert_eq!(s, r);
}
你也可以使用 char::decode_utf16 函数来迭代解码 UTF-16 字节序列中的字符:
use std::char;
fn main() {
let utf16: Vec<u16> = vec![0x4F60, 0x597D, 0xFF0C, 0x4E16, 0x754C, 0xFF01];
let mut chars = utf16.iter().cloned();
let mut s = String::new();
while let Some(c) = char::decode_utf16(&mut chars) {
s.push(c.unwrap());
}
assert_eq!(s, "你好,世界!");
}