0

俄语“A”的 utf-8 字符码是 1040(十进制)。Javascript 做对了:

> 'А'.charCodeAt(0)
> 1040

但是PHP代码

<?php echo ord('А');?>

返回 208。

请注意,在 PHP 代码的开头我有:

mb_internal_encoding( 'UTF-8' );
setlocale( LC_CTYPE, 'ru_RU' );

如何在 PHP 中实现 UTF-8 字符的编码和解码?使用另一个函数而不是ord?

4

2 回答 2

2
<?php
    mb_internal_encoding('UTF-8');
    header('Content-Type: text/html; charset=UTF-8');
?>
<html>
    <head>
        <meta charset="UTF-8" />
    </head>
    <body>
    <?php
        $the_char   = 'А';
        $byte_1     = $the_char[0];
        $byte_2     = $the_char[1];
        print (ord($byte_1) - 192) * 64 + (ord($byte_2) - 128);
    ?>
    </body>
</html>
于 2014-03-22T08:54:10.137 回答
1
<?php

function ord_utf8($s){
return (int) ($s=unpack('C*',$s[0].$s[1].$s[2].$s[3]))&&$s[1]<(1<<7)?$s[1]:
($s[1]>239&&$s[2]>127&&$s[3]>127&&$s[4]>127?(7&$s[1])<<18|(63&$s[2])<<12|(63&$s[3])<<6|63&$s[4]:
($s[1]>223&&$s[2]>127&&$s[3]>127?(15&$s[1])<<12|(63&$s[2])<<6|63&$s[3]:
($s[1]>193&&$s[2]>127?(31&$s[1])<<6|63&$s[2]:0)));
}

print_r(ord_utf8('А'));

// Output 1040

你可以在这里找到更多关于它的解释https://stackoverflow.com/a/42600959/7558876

于 2017-03-04T20:39:35.843 回答