我有以下代码:
fn handle_client(mut stream: TcpStream) -> () {
let mut buffer = [0; 4096];
stream.read(&mut buffer).expect("read fail");
let path_request: Cow<'_, str> = String::from_utf8_lossy(&buffer[..]);
并且我需要从 ascii 进行解码,所以我询问是否存在用于 ascii 编码的 String::from_utf8_lossy() 类似物?
我需要相似的代码:
fn handle_client(mut stream: TcpStream) -> () {
let mut buffer = [0; 4096];
stream.read(&mut buffer).expect("read fail");
let path_request: Cow<'_, str> = String::from_ascii_lossy(&buffer[..]);
谢谢!
Rust 中的字符串必须是有效的 UTF-8 序列。
String::from_utf8_lossy
的所有功能都是用 Unicode“替换字符”(�) 替换字节字符串中不是有效 UTF-8 序列的任何部分。
UTF-8 的设计使所有有效的 ASCII 字符串也是有效的 UTF-8 字符串,因此您可以在 ASCII 字符串上使用完全相同的函数。 但是,由于它永远不需要替换字符,因此您可以使用
std::str::from_utf8
来代替并解开结果;这将保证永远不会分配。 (如果您从不受信任的来源读取内容,您可能想以某种方式正确处理错误。)