Как получить значение в кодировке Unicode? - PullRequest
0 голосов
/ 21 октября 2018

Я хочу получить значение Юникода Кандзи.Это может быть что-то вроде let values: &[u16] = f("ののの");

Когда я использую "の".as_bytes(), я получил [227, 129, 174].

Когда я использую 'の'.escape_unicode(), я получил '\u306e', 0x306eчто именно я хочу.

1 Ответ

0 голосов
/ 21 октября 2018

Тип char может быть приведен к u32 с использованием as.В строке

println!("{:x}", 'の' as u32);

будет напечатано «306e» (используя {:x} для форматирования числа в шестнадцатеричном формате).

Если вы уверены, что все ваши символы находятся в BMP , теоретически вы также можете привести непосредственно к u16.Для персонажей из дополнительных плоскостей это будет молча давать неправильные результаты, хотя, например, '?' as u16 возвращает 0xf756 вместо правильного 0x1f756, поэтому вам нужна веская причина для этого.

Внутренне, char хранится как 32-разрядное число, поэтому c as u32 для некоторого символа c только интерпретирует представление символа в памяти как u32.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...