在php中获取扩展ASCII字符的ASCII值

时间:2015-03-04 06:48:09

标签: php ascii php-5.5 extended-ascii

我正在尝试获取扩展ASCII字符集中某些字符的ASCII值。

像:

echo ord('„');

其输出为:226

但实际的ASCII值是:132。

我的问题是如何获得大于1字节大小的那些字符的实际ASCII值?

2 个答案:

答案 0 :(得分:0)

ord只需获取给定字符串的第一个字节,并以十进制形式返回其数值。如果它没有给你你所期望的,可能你的输入不是你所期望的。如果需要扩展ASCII的字节值,则必须使用扩展ASCII编码输入字符串。目前您可能获得E2 80 9E的第一个字节的值,UTF-8编码为“”“,因为您的输入实际上是UTF-8编码,因为您的源代码文件保存为UTF-8

答案 1 :(得分:0)

我找到了solution here。 您的字符是utf8编码的8222,它被称为多字节字符(mb)或html special entity

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('„');