別にRust限定ではないですが、Rustのサンプルコードで出てきたので書き止め。
Beginning Rustに以下のようなコードがあり、
fn main() {
fn print_codes(s: &str) {
let mut iter = s.chars();
loop {
match iter.next() {
// c as u32 generates 'code point', not UTF-8
Some(c) => { println!("{}: {}", c, c as u32); },
None => { break; },
}
}
}
print_codes("ۏe");
}
結果は、
€: 8364
è: 232
e: 101
となりますが、eはUTF-8でもそのままですが、€とèは何なのかと思ったら、c as u32というのはUnicode上のコードポイントを返すだけで、UTF-8コードではないから。
https://qiita.com/omiita/items/50814037af2fd8b2b21e
このリンクを参照すると理屈はよくわかります。
admin