, , , std::ascii::escape_default. , ASCII, , . , Unicode, UTF-8, :
use std::ascii::escape_default;
use std::str;
fn show(bs: &[u8]) -> String {
let mut visible = String::new();
for &b in bs {
let part: Vec<u8> = escape_default(b).collect();
visible.push_str(str::from_utf8(&part).unwrap());
}
visible
}
fn main() {
let bytes = b"foo\xE2\x98\x83bar\xFFbaz";
println!("{}", show(bytes));
}
: foo\xe2\x98\x83bar\xffbaz
, . UTF-8, Unicode , Unicode UTF-8:
fn show(bs: &[u8]) -> String {
String::from_utf8_lossy(bs).into_owned()
}
fn main() {
let bytes = b"foo\xE2\x98\x83bar\xFFbaz";
println!("{}", show(bytes));
}
: foo☃bar baz