Rust 如何获取字符';unicode值是多少?

Rust 如何获取字符';unicode值是多少?,rust,Rust,我想得到汉字的Unicode值。它可能看起来像let值:&[u16]=f(“ののの"); 当我使用时の“.as_bytes()我得到了[227129174] 当我使用时の'.escape_unicode()我得到了'\u306e',0x306e正是我想要的。可以使用as将char类型转换为u32。行 println!("{:x}", 'の' as u32); 将打印“306e”(使用{:x}将数字格式化为十六进制) 如果您确定所有字符都在中,理论上也可以直接强制转换到u16

我想得到汉字的Unicode值。它可能看起来像
let值:&[u16]=f(“ののの");

当我使用
时の“.as_bytes()
我得到了
[227129174]


当我使用
时の'.escape_unicode()
我得到了
'\u306e'
0x306e
正是我想要的。

可以使用
as
char
类型转换为
u32
。行

println!("{:x}", 'の' as u32);
将打印“306e”(使用
{:x}
将数字格式化为十六进制)


如果您确定所有字符都在中,理论上也可以直接强制转换到
u16
。但是,对于来自补充平面的字符,这将默默地给出错误的结果,例如
”の' 作为u16
,十六进制编码。如果你想对整个字符串进行操作,并且你确信它都是汉字,你可以将其编码为UTF-16……当然,如果你正在寻找代码点,那么强烈建议将
作为u32
。的确,UTF-16对汉字来说已经足够好了,但总体而言,这种编码只是一团糟。许多字符将无法使用
u16
给出正确的代码点の我甚至会说“永远不要使用
u16
”,这只是一种误导和不必要的“优化”。但是,我很荣幸地发现,作为u16
会悄悄地从高阶16位的代码点上掉下来。这是一个很好的信息,需要很好地研究。我建议将它的措辞改为“不要这样做”,因为你可能知道你的角色今天都在BMP中,但明天可能就不在了。谢谢。顺便问一下,你知道如何获取它的Shift JIS值吗?我应该使用查找表吗?@RayToal我同意并稍微更改了措辞。@AurevoirXavier我刚刚为你搜索了它-给你:@SvenMarnach你救了我一天!