扩展ASCII表上的PHP ord()函数

时间:2015-10-02 16:04:29

标签: php ord

在扩展ASCII表中的ASCII字符上使用 PHP ord()函数时,我遇到了一个奇怪的问题:

<?php
    echo ord('!'); // prints 33 : OK
    echo ord('a'); // prints 97 : OK

    echo ord('é'); // prints 195 : NOT OK
    echo ord('ü'); // prints 195 : NOT OK
?>

你知道为什么这个函数有这种行为吗?

此外,我想指出我实际上是在尝试创建一个非常简单的隐写术程序,将逐个字符的消息转换为二进制表示(使用ASCII表),然后创建一个简单的黑白8xC像素image(其中C对应于总数中的字符数),这就是我处理这种东西的原因。

我只是想知道如何使用以及如何应用我刚学到的关于PHP GD库的内容,所以我认为这将是一次很棒的培训!

提前感谢您的回答(对不起我的英语)!

1 个答案:

答案 0 :(得分:3)

ord()不支持utf-8。将此函数用于unicode字符:

function uniord($u) { 
    $k = mb_convert_encoding($u, 'UCS-2LE', 'UTF-8'); 
    $k1 = ord(substr($k, 0, 1)); 
    $k2 = ord(substr($k, 1, 1)); 
    return $k2 * 256 + $k1; 
} 

    echo ord('!'); // prints 33 : OK
    echo ord('a'); // prints 97 : OK

    echo uniord('é'); //233
    echo uniord('ü'); //252

PS:您可以完美地使用uniord()这两种字符。