Ode*_*Wat 6 iso-8859-1 character-encoding rust
我扫描了Rust文档,以便在字符编码之间进行转换,但没有找到任何内容.我错过了什么?
是否由Rust语言及其标准库支持(直接或间接),甚至计划在不久的将来?
由于其中一个答案表明有一个简单的解决方案,因为u8可以转换为(Unicode)chars.Unicode是ISO-8859-1中代码点的超集,即1:1映射,它编码为UTF-8中的多个字节,这是StringRust 中s 的内部编码.
fn main() {
println!("{}", 196u8 as char);
println!("{}", (196u8 as char) as u8);
println!("{}", 'Ä' as u8);
println!("{:?}", 'Ä'.to_string().as_bytes());
println!("{:?}", "Ä".as_bytes());
println!("{}",'Ä' == 196u8 as char);
}
Run Code Online (Sandbox Code Playgroud)
得到:
Ä
196
196
[195, 132]
[195, 132]
true
Run Code Online (Sandbox Code Playgroud)
哪个我甚至没有考虑过工作!
Rust中的字符串是unicode(UTF-8),unicode代码点是iso-8859-1字符的超集.这种特定的转换实际上是微不足道的.
fn latin1_to_string(s: &[u8]) -> String {
s.iter().map(|&c| c as char).collect()
}
Run Code Online (Sandbox Code Playgroud)
我们将每个字节解释为unicode代码点,然后从这些代码点构建String.
| 归档时间: |
|
| 查看次数: |
2361 次 |
| 最近记录: |