使用调试格式时如何编写西里尔文本?
How to write Cyrillic text when using the debugging format?
使用 println!
时按预期工作:
println!("Привет!"); // Привет!
但是使用调试格式:
println!("{:?}", "Привет!"); // "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"
使用assert!
:
assert!("Привет!" != "Привет!") // 'assertion failed: "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!" != "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"
有什么方法可以让 assert!
以调试格式正确打印?
就 Rust 而言, 是正确的。 str
的 Debug
的实现将自身限制为可打印的 ASCII 字符,以便无论代码页或输出机制如何,输出都是可读的。
我不相信你可以做任何事情来改变字符串一般;根据具体情况,您可以改用 Display
,或者围绕 &str
创建一个包装器,转发到 Display
而不是 Debug
。
使用 println!
时按预期工作:
println!("Привет!"); // Привет!
但是使用调试格式:
println!("{:?}", "Привет!"); // "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"
使用assert!
:
assert!("Привет!" != "Привет!") // 'assertion failed: "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!" != "\u{41f}\u{440}\u{438}\u{432}\u{435}\u{442}!"
有什么方法可以让 assert!
以调试格式正确打印?
就 Rust 而言, 是正确的。 str
的 Debug
的实现将自身限制为可打印的 ASCII 字符,以便无论代码页或输出机制如何,输出都是可读的。
我不相信你可以做任何事情来改变字符串一般;根据具体情况,您可以改用 Display
,或者围绕 &str
创建一个包装器,转发到 Display
而不是 Debug
。