如何在 Rust 中表示这个 utf-8 编码的字符串?

问题描述

在此 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);