您好,欢迎来到三六零分类信息网!老站,搜索引擎当天收录,欢迎发信息

PHP: 使用chr打印汉字

2024/3/20 5:19:59发布24次查看
使用chr($i)可以顺利的打印出ascii,但是,当$i>=19968(汉字的unicode的起始值4e00的十进制)后,发现没法打印出汉字。
如:


虽然有其他方法,如:
//代码2$character = html_entity_decode('一', ent_quotes, 'utf-8');

但为什么代码1没法打印出汉字?
回复内容: 使用chr($i)可以顺利的打印出ascii,但是,当$i>=19968(汉字的unicode的起始值4e00的十进制)后,发现没法打印出汉字。
如:


虽然有其他方法,如:
//代码2$character = html_entity_decode('一', ent_quotes, 'utf-8');

但为什么代码1没法打印出汉字?
ascii根本就不包含汉字,
包含汉字的是gb2312-80,gbk,big5,unicode
汉字是多字节,你用ord就会发现,只会返还汉字的首字节。
其实chr函数的源代码就在 /ext/standard/string.c
代码如下
php_function(chr)
{
long c;
char temp[2];
if (zend_num_args() != 1) { wrong_param_count;}if (zend_parse_parameters_ex(zend_parse_params_quiet, zend_num_args() tsrmls_cc, l, &c) == failure) { c = 0;}temp[0] = (char)c;temp[1] = '\0';return_stringl(temp, 1, 1);
}
可以看到的是,就是c语言的字符强制转换。
该用户其它信息

VIP推荐

免费发布信息,免费发布B2B信息网站平台 - 三六零分类信息网 沪ICP备09012988号-2
企业名录 Product