Unicodeのcode point(@Rust)

別に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

カテゴリーRust