俄语' 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
?
答案 0 :(得分: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>
答案 1 :(得分: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
找到更多相关说明