V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
DTCPSS
V2EX  ›  Rust

Rust 怎么自动猜测子进程 stdout 的字符编码,然后把它转成 String?

  •  
  •   DTCPSS · 2022-07-01 11:26:41 +08:00 · 1401 次点击
    这是一个创建于 876 天前的主题,其中的信息可能已经有所发展或是发生改变。

    需要读取一个外部程序的字符串输出。捕获到的 stdout 输出是个 Vec<u8>,字符编码在不同系统上可能不一样,比如在 Windows 上是 GB2313 。

    怎么把它转成 Rust 的 String ?

    let process_output: Output = std::process::Command::new("外部程序").output().expect("外部程序执行失败");
    let process_stdout: Vec<u8> = process_output.stdout;
    let process_stdout_string: String = String::from_utf8(process_stdout).expect("编码不是 UTF-8");
    
    2 条回复    2022-07-01 14:43:11 +08:00
    DTCPSS
        1
    DTCPSS  
    OP
       2022-07-01 11:46:39 +08:00
    billzhuang
        2
    billzhuang  
       2022-07-01 14:43:11 +08:00
    相当于要检测出对应外部程序的 stdout 的编码是么?
    Windows 也不一定就是 GB2312 ,对吧。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2742 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 10:13 · PVG 18:13 · LAX 02:13 · JFK 05:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.