问题描述
在此 RFC:https://tools.ietf.org/html/rfc7616#page-19 第 19 页上,有一个以 UTF-8 编码的文本示例:
J U+00E4 s U+00F8 n D o e
4A C3A4 73 C3B8 6E 20 44 6F 65
如何在 Rust 字符串中表示它?
我尝试了 https://mothereff.in/utf-8 并执行了 J\00E4s\00F8nDoe
,但没有奏效。
解决方法
"Jäsøn Doe"
应该可以正常工作。 Rust source files are always UTF-8 encoded 和所有 Unicode 都允许出现在字符串文字中。
如果您使用的编辑器只支持 UTF-8 的 ASCII 子集,您可以使用 Unicode 代码点转义,这在 the Rust reference 中有说明:
24 位代码点转义以 U+0075
(u
) 开头,后跟最多六个十六进制数字,用大括号括起来U+007B
({
) 和 U+007D
(}
)。它表示等于提供的十六进制值的 Unicode 代码点。
建议正确的语法应该是 "J\u{E4}s\u{F8}n Doe"
。
您可以参考 Rust By Example,因为 Rust 电子书没有涵盖所有内容
(https://doc.rust-lang.org/stable/rust-by-example/std/str.html#literals-and-escapes)
您可以使用语法 \u{your_unicode}
let unicode_str = String::from("J\u{00E4}s\u{00F8}nDoe");
println!("{}",unicode_str);