- 使用
encoding
库实现编码转换:
encoding
库是Rust中处理不同编码转换的常用第三方库。
- 首先在
Cargo.toml
中添加依赖:
[dependencies]
encoding = "0.2"
use encoding::Encoding;
use encoding::all::ASCII;
fn main() {
let utf8_str = "hello";
let ascii_result = ASCII.encode(utf8_str);
match ascii_result {
Ok(ascii_bytes) => {
let ascii_str = String::from_utf8_lossy(&ascii_bytes);
println!("UTF - 8 to ASCII: {}", ascii_str);
},
Err(_) => println!("Conversion failed"),
}
}
- UTF - 8转ISO - 8859 - 1示例:
use encoding::Encoding;
use encoding::all::ISO_8859_1;
fn main() {
let utf8_str = "äöü";
let iso88591_result = ISO_8859_1.encode(utf8_str);
match iso88591_result {
Ok(iso88591_bytes) => {
let iso88591_str = String::from_utf8_lossy(&iso88591_bytes);
println!("UTF - 8 to ISO - 8859 - 1: {}", iso88591_str);
},
Err(_) => println!("Conversion failed"),
}
}
- 使用标准库实现UTF - 8相关转换(标准库对ASCII有较好支持):
- UTF - 8转ASCII:
Rust标准库的
str
类型有一些方法可用于检查和转换为ASCII。如果字符串本身只包含ASCII字符,可以很容易地转换。
fn main() {
let utf8_str = "hello";
if let Some(ascii_str) = utf8_str.as_bytes().as_ptr().cast::<u8>().as_ref() {
println!("UTF - 8 to ASCII: {}", String::from_utf8_lossy(ascii_str));
} else {
println!("String is not valid ASCII");
}
}
- 对于ISO - 8859 - 1等其他编码,标准库没有直接支持转换,还是需要借助像
encoding
这样的第三方库。