当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Rust String.from_utf8_lossy用法及代码示例


本文简要介绍rust语言中 alloc::string::String.from_utf8_lossy 的用法。

用法

pub fn from_utf8_lossy(v: &[u8]) -> Cow<'_, str>

将字节切片转换为字符串,包括无效字符。

字符串由字节组成( u8 ),而字节切片( &[u8] )由字节组成,因此此函数在两者之间进行转换。但是,并非所有字节切片都是有效的字符串:字符串必须是有效的 UTF-8。在此转换过程中,from_utf8_lossy() 将用 U+FFFD REPLACEMENT CHARACTER 替换任何无效的 UTF-8 序列,如下所示:

如果您确定字节切片是有效的 UTF-8,并且您不想产生转换开销,则此函数有一个不安全版本 from_utf8_unchecked ,它具有相同的行为但跳过检查.

此函数返回 Cow<'a, str> 。如果我们的字节切片是无效的 UTF-8,那么我们需要插入替换字符,这将改变字符串的大小,因此需要 String 。但如果它已经是有效的 UTF-8,我们就不需要新的分配。这种返回类型允许我们处理这两种情况。

例子

基本用法:

// some bytes, in a vector
let sparkle_heart = vec![240, 159, 146, 150];

let sparkle_heart = String::from_utf8_lossy(&sparkle_heart);

assert_eq!("💖", sparkle_heart);

不正确的字节:

// some invalid bytes
let input = b"Hello \xF0\x90\x80World";
let output = String::from_utf8_lossy(input);

assert_eq!("Hello �World", output);

相关用法


注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 alloc::string::String.from_utf8_lossy。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。