gpt4 book ai didi

rust - 使用get_wch读取Unicode字符

转载 作者:行者123 更新时间:2023-12-03 11:49:02 25 4
gpt4 key购买 nike

我正在用Rust编写ncurses应用程序。

我希望用户能够输入Unicode(UTF-8)字符。除了将它们打印到屏幕上之外,我还将根据这些字符构建一个搜索字符串。

这是一个最小的示例:

use ncurses::*;

fn main() {
initscr();
loop {
let input = get_wch();
match input.unwrap() {
WchResult::Char(ch) => {
match ch {
27 => break,
_ => { mvaddstr(0, 0, &format!("spam {}", ch)); }
}
},
WchResult::KeyCode(code) => { mvaddstr(0, 0, &format!("eggs {}", code)); }
}
}
endwin();
}

有人告诉我,如果我想读取UTF-8字符,则应该使用 get_wch(),但是当我输入 ć时,输出的是 ~G。对于ASCII字符,它将输出 spam <ch>

如何在ncurses应用程序中正确处理Unicode?

最佳答案

在这里看看:https://github.com/jeaye/ncurses-rs/blob/master/examples/ex_7.rs

get_wchar()获取单个宽字符,表示存储在i32中的单个Unicode标量值。 Unicode标量值是Unicode上下文中通常称为“字符”的字符。 UTF-8将每个“字符”编码为1到4个字节。对应的Rust类型是char。要转换它,您应该将其转换为u32并使用char::from_u32()方法。这将返回一个选项(因为并非所有的u32值都是有效的Unicode标量值)。解包后,char的Display trait现在应注意将其编码为UTF-8并将其放入输出流。

关于rust - 使用get_wch读取Unicode字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61311815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com