如何在rust中从ascii解码? rust 的 String::from_ut8_lossy() 的类似物是什么?

问题描述 投票:0回答:1

我有以下代码:

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 ascii decoding utf
1个回答
0
投票

Rust 中的字符串必须是有效的 UTF-8 序列。

String::from_utf8_lossy
的所有功能都是用 Unicode“替换字符”(�) 替换字节字符串中不是有效 UTF-8 序列的任何部分。

UTF-8 的设计使所有有效的 ASCII 字符串也是有效的 UTF-8 字符串,因此您可以在 ASCII 字符串上使用完全相同的函数。 但是,由于它永远不需要替换字符,因此您可以使用

std::str::from_utf8
来代替并解开结果;这将保证永远不会分配。 (如果您从不受信任的来源读取内容,您可能想以某种方式正确处理错误。)

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.