【问题标题】:from_utf8 wraps string in quotationsfrom_utf8 将字符串用引号括起来
【发布时间】:2020-07-14 14:53:44
【问题描述】:

我目前正在通过构建一个简单的工具来学习 rust。

我需要连接一些脚本并使用 rust-embed。 crate 为给定文件返回一个借用的 &[u8],我需要将其解释为字符串。

来自锈documentation, 我有以下example

#![allow(unused)]
fn main() {
use std::str;

// some bytes, in a vector
let sparkle_heart = vec![240, 159, 146, 150];

// We know these bytes are valid, so just use `unwrap()`.
let sparkle_heart = str::from_utf8(&sparkle_heart).unwrap();

println!("I {:?} U", &sparkle_heart);
}

输出是

I "????" U

我的问题是围绕心脏的引用,这导致我的最终脚本出现问题。

【问题讨论】:

    标签: string utf-8 rust


    【解决方案1】:

    这与from_utf8无关。

    您使用的是Debug(因为您的格式是{:?}),它用于调试并且总是用引号括住字符串并转义特殊字符。

    你应该改用{}:

    println!("I {} U", &sparkle_heart);
    

    这将打印I ? U

    另见:

    【讨论】:

    • 谢谢!我什至没有注意到,因为 rust-embed 中的示例使用了这个。
    • 旁注:如果您只想在字符串中包含 Unicode 字符,则可以使用 Unicode escape sequence 而不是从原始字节格式化:"I \u{1F496} U"。或者,如果您的编辑器允许,您可以直接在代码中写入 Unicode 字符:playground
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    相关资源
    最近更新 更多