我用 Rust 编写了一个 echo 程序(可以处理 UTF-8),有时 st 似乎会弄乱 UTF-8 输入。我尝试了不同的终端仿真器,比如 alacritty 和 gnome-terminal,它们运行良好。
要重现这一点:
- 在 st 中运行这个 Rust 代码:
use std::io::BufRead;
fn main() {
for line in std::io::stdin().lock().lines() {
let line = line.unwrap();
println!("{line}");
}
}
- 输入诸如“Rückgängig”之类的内容,或其他带有非英文字符的字符串。
一段时间后,程序应该会失败:
thread 'main' panicked at 'called `Result::unwrap()` on an `Err` value: Error { kind: InvalidData, message: "stream did not contain valid UTF-8" }', src/main.rs:5:25
有谁知道如何解决这个问题或为什么会发生这种情况?