编码相关概念
- ASCII:美国信息交换标准代码,使用7位二进制数表示128个字符,主要用于表示英文字母、数字和一些基本符号。但它无法表示世界上众多语言中的非英文字符。
- UTF - 8:一种针对Unicode的可变长度字符编码,是一种使用1 - 4个字节来表示一个字符的编码方式。它可以表示Unicode标准中的任何字符,并且与ASCII兼容(ASCII字符在UTF - 8中用1个字节表示,和ASCII编码一样)。在Rust中,字符串(
String
)内部默认是以UTF - 8编码存储的。
代码实现(Rust语言)
fn main() {
let non_ascii_string = "你好,世界!";
// 将字符串转换为字符数组
let char_vec: Vec<char> = non_ascii_string.chars().collect();
// 将字符数组转换回字符串
let back_to_string: String = char_vec.iter().collect();
println!("原始字符串: {}", non_ascii_string);
println!("转换回的字符串: {}", back_to_string);
}
代码解释
non_ascii_string.chars().collect()
:chars()
方法将 String
拆分成一个个字符的迭代器,collect()
方法将这个迭代器收集成 Vec<char>
。
char_vec.iter().collect()
:通过迭代 Vec<char>
,再使用 collect()
方法将其转换回 String
。由于Rust的 String
内部是UTF - 8编码,并且 char
类型本身就支持Unicode字符,所以整个转换过程不会出现编码错误。