Получить значение ASCII для расширенных символов ASCII в переполнении стека

Я пытаюсь получить значение ASCII некоторых символов, которые находятся в расширенном наборе символов ASCII.

Подобно:

echo ord('„');

Его вывод: 226

Но фактическое значение ASCII: 132.

Мой вопрос: как получить фактическое значение ASCII для символа, размер которого превышает 1 байт?

0

Решение

ord просто берет первый байт данной строки и возвращает ее числовое значение в десятичной форме. Если это не дает того, что вы ожидаете, скорее всего, ваш вклад не соответствует вашим ожиданиям. Если вам нужно байтовое значение Extended ASCII, то ваша входная строка должна быть закодирована в Extended ASCII. В настоящее время вы, вероятно, получаете значение первого байта E2 80 9Eкодировка UTF-8 для «„ », потому что ваши входные данные на самом деле кодируются в кодировке UTF-8, потому что ваш файл исходного кода сохраняется как UTF-8.

0

Другие решения

Я нашел решение здесь.
Ваш символ 8222 в кодировке utf8 и называется многобайтовым символом (мб) или HTML специальный объект.

function mb_ord($string)
{
if (extension_loaded('mbstring') === true)
{
mb_language('Neutral');
mb_internal_encoding('UTF-8');
mb_detect_order(array('UTF-8', 'ISO-8859-15', 'ISO-8859-1', 'ASCII'));

$result = unpack('N', mb_convert_encoding($string, 'UCS-4BE', 'UTF-8'));

if (is_array($result) === true)
{
return $result[1];
}
}

return ord($string);
}
echo mb_ord('„');
0

По вопросам рекламы [email protected]