В Rust можно получить UTF-8 из байтов, выполнив следующие действия:
if let Ok(s) = str::from_utf8(some_u8_slice) {
println!("example {}", s);
}
Это либо работает, либо нет, но Python может обрабатывать ошибки, например:
s = some_bytes.decode(encoding='utf-8', errors='surrogateescape');
В этом примере аргумент surrogateescape
преобразует недопустимые последовательности utf-8 в escape-коды, поэтому вместо игнорирования или замены текста, который не может быть декодирован, они заменяются байтовым литеральным выражением, которое допустимо utf-8
. см. подробности в Python.
Есть ли в Rust способ получить строку UTF-8 из байтов, которая избегает ошибок, а не полностью терпит неудачу?