文档章节

php输出ascii汉字的疑惑

酒逍遥
 酒逍遥
发布于 2017/02/15 16:06
字数 303
阅读 16
收藏 0

php中直接输出汉字的十六进制ascii码会直接得到汉字本身

例如下代码:

echo "\xe4\xbd\xa0\xe5\xa5\xbd";

或者

$str="\xe4\xbd\xa0\xe5\xa5\xbd";

echo $str;

输出结果都是 你好  两个汉字.

 

但是当把字符串 \xe4\xbd\xa0\xe5\xa5\xbd 写到一个文件中.然后php把这个文件读取到一个字符串中.

再直接输出.那么就会输出该字符串本身而不是直接的汉字.

但是如果使用eval 函数 把字符串再进行一次赋值.那么又可以输出汉字了.

很奇怪的现象.

 

估计是php对字符串解析的时候有点问题.

 

由于php里汉字可以作为变量名

于是一段很有趣的代码就诞生了

$str="\xe4\xbd\xa0\xe5\xa5\xbd";

$$str="123";

echo $你好;

会看到可以输出 123

 

经过试验已经大致明白原理了...

试试 echo '\xe4\xbd\xa0\xe5\xa5\xbd' 会看到并没有输出汉字而是字符串本身.

应该是php解析器对变量内容进行解析的时候直接解析成ascii对应的字符串内容了.

© 著作权归作者所有

共有 人打赏支持
酒逍遥

酒逍遥

粉丝 48
博文 40
码字总数 35454
作品 0
武汉
高级程序员
私信 提问
PHP: chr和pack、unpack那些事

PHP是一门很灵活的语言。正因为它太灵活了,甚至有些怪异,所以大家对它的评价褒贬不一。其实我想说的是,任何一门语言都有它自身的哲学,有它存在的出发点。PHP为Web而生,它以快速上手、快...

陈亦
2014/02/23
0
31
MySQL怎么存文本不乱码?

导读 MySQL里怎么存储那些看起来会乱码的字符? 我在“UTF8字符集的表怎么直接转UTF8MB4”一文中介绍了如何把表字符集由UTF8直接转换成UTF8MB4的几种方法。 1、只修改字符集(使用默认校验集...

n88lpo
2017/12/06
0
0
深入浅出Node.js(六):Buffer那些事儿

作为前端的JSer,是一件非常幸福的事情,因为在字符串上从来没有出现过任何纠结的问题。我们来看看PHP对字符串长度的判断结果: <? phpecho strlen("0123456789"); echo strlen("零一二三四五...

leeldy
2012/10/25
0
0
将python2中汉字会出现乱码的事一次性说清楚

1、写的代码模块需要指定编码 如果代码没有指定coding,python就默认所有的字符为ASCII码, ASCII码只支持256个字符,ASCII码不支持中文,所以就报错。 所以要在代码前写上#coding:utf-8或#codi...

shshi
2013/12/09
0
0
关于python无法显示中文的问题:SyntaxError: Non-ASCII character

想在python代码中输出汉字。但是老是出现SyntaxError: Non-ASCII character 'xe4' in file test.py on line , but no encoding declared。 (test.py是我自己的文件,提示错误出现在第4行, ...

灬落魄灬
2017/03/28
0
0

没有更多内容

加载失败,请刷新页面

加载更多

GO redis 相关操作

在gopath 目录下安装 go get github.com/garyburd/redigo/redis package mainimport ("fmt""github.com/garyburd/redigo/redis")//定义一个全局链接池变量var pool *redis.Pool//......

汤汤圆圆
29分钟前
6
0
java8性特性,常用的lambda表达式

1、抽取多个对象中的某个属性,用数组接收 List<Student> students = new ArrayList<>(); List<String> names =students.stream().map(Student::getName).collect(Collectors.toList()); 2、......

Boss-x
30分钟前
7
0
flutter 子组件与父组件

无论是子组件还是父组件,任何时候initState()只执行一次,如果需要判断 就在build里面进行,不然无效的。

大灰狼wow
32分钟前
4
0
Rancher Labs引入全球首个多集群、多租户的Prometheus支持!

近日,Rancher Labs宣布加强对Prometheus的支持,提高Kubernetes集群的可见度。Rancher也因此成为唯一一个在多集群、多租户环境中支持Prometheus的解决方案。 Prometheus正迅速成为监控云原生...

RancherLabs
34分钟前
3
0
vue项目中api接口管理总结

默认vue项目中已经使用vue-cli生成,安装axios,基于element-ui开发,axiosconfig目录和api目录是同级,主要记录配置的相关。 1. 在axiosconfig目录下的axiosConfig.js import Vue from 'vue...

peakedness丶
37分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部