Я работаю над базой кода perl для проверки ввода клиента, моя цель - заблокировать суррогатные символы.
Моя мысль заключается в том, чтобы сначала закодировать ввод клиента как UTF-16 и
foreach my $messageChar (@MessageChars) {
my $messageCharUTF16 = Encode::encode("UTF-16", $messageChar);
if (($messageCharUTF16 >= 0xD800 && $messageCharUTF16 <= 0xDBFF)|( $messageCharUTF16 >= 0xDC00 && $messageCharUTF16 <= 0xDFFF)) {
// Then we have surrogate pairs
}
}
Однако я не получаю правильные значения UTF-16 из Encode::encode.
Как я могу выявить суррогатные пары? Есть ли простой способ проверить, содержит ли строка суррогатные символы в Perl?