我正在尝试将 ASCII 字节向量转换为 rust 字符串。我找到了一个std::str::from_utf8()
函数,它应该能够处理所有 ASCII 字符串。由于某种原因,它无法读取版权符号,如以下代码示例所示:
let buf = vec![0xA9, 0x41, 0x52, 0x54]; //©ART
println!(
"{}",
match std::str::from_utf8(&buf) {
Ok(x) => x,
Err(x) => {
println!("ERROR: {}", x);
"failed"
}
}
);
// > ERROR: invalid utf-8 sequence of 1 bytes from index 0
根据https://www.ascii-code.com/CP1252/169 0xA9
是一个有效的 ASCII 字符,根据https://www.compart.com/en/unicode/U+00A9也是一个有效的 UTF-8 字符。
我也尝试过String::from_utf8_lossy()
,但是�ART
结果却不是字符串应该有的样子。
是我遗漏了什么吗,或者这是 rust 处理 ASCII 方式的一个错误?