文档章节

php输出ascii汉字的疑惑

酒逍遥
 酒逍遥
发布于 2017/02/15 16:06
字数 303
阅读 11
收藏 0
点赞 0
评论 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 ⋅ 31

PHP中substr() mb_substr() mb_struct()的区别和用法及Smar...

PHP substr(),mbsubstr()及mbstrcut的区别和用法及Smarty模板中的truncate调节器浅谈 PHP substr() 函数可以 分割文字,但要分割的文字如果包括中文字符往往会遇到问题,这时可以用mbsubstr(...

sco ⋅ 2012/10/07 ⋅ 0

魔术引号、addslashes和mysql_real_escape_string的防御以及绕过

0x00:php内置过滤函数 php有内置的函数用来防御攻击,简单的介绍几个函数。 魔术引号 当打开时,所有的 '(单引号),"(双引号),(反斜线)和 NULL 字符都会被自动加上一个反斜线进行转义...

wt7315 ⋅ 2017/06/02 ⋅ 0

MySQL怎么存文本不乱码?

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

n88lpo ⋅ 2017/12/06 ⋅ 0

深入浅出Node.js(六):Buffer那些事儿

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

leeldy ⋅ 2012/10/25 ⋅ 0

python制作galgame引擎(EX)

来来来,最后一点东西。扯完了这个系列就暂时结束了,然后我就可以滚去再次开始憋代码……当有了比较大的更新或者长了比较大的姿势的时候,这个系列还会更新。极有可能的是,前几篇讨论的东西...

Aprocy ⋅ 2013/01/29 ⋅ 4

php朝花夕拾之strlen mb_strlen的函数的区别

涉及到一个字符编码问题 gbk编码:一个汉字占两个字节 utf8编码:一个汉字占3个字节 案例: 面试题目: 关于汉字字符串的截取: 案例: 案例2: 注意,上个案例中,用自定义的函数计算字符串...

成越 ⋅ 2016/09/06 ⋅ 0

PHP中文转拼音工具--PHP-Pinyin

Pinyin 基于 CC-CEDICT 词典的中文转拼音工具,更准确的支持多音字的汉字转拼音解决方案。 安装 使用 Composer 安装: composer require "overtrue/pinyin:~3.0" 使用 拼音数组 use Overtrue...

安正超 ⋅ 2014/07/16 ⋅ 1

将python2中汉字会出现乱码的事一次性说清楚

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

shshi ⋅ 2013/12/09 ⋅ 0

PostgreSQL 字符集下区域设置对性能的影响改进办法

阿弟(陈爱生)测试发现,UTF-8下 locale 选用 C 和 zhCN 性能差距非常大: http://bbs.pgsqldb.com/client/postshow.php?ztautobh=57394 以前修改过这个字符类型比较的部分,当时遇到的问题...

有理想的猪 ⋅ 2013/06/05 ⋅ 2

没有更多内容

加载失败,请刷新页面

加载更多

下一页

win环境下jdk7与jdk8共存配置

1.jdk安装包 jdk安装包 安装步骤略 2.jdk等配置文件修改 在安装JDK1.8时(本机先安装jdk1.7再安装的jdk1.8),会将java.exe、javaw.exe、javaws.exe三个文件copy到了C:\Windows\System32,这...

泉天下 ⋅ 18分钟前 ⋅ 0

windows profesional 2017 build problem

.net framework .... https://stackoverflow.com/questions/43330915/could-not-load-file-or-assembly-microsoft-build-frameworkvs-2017...

机油战士 ⋅ 52分钟前 ⋅ 0

python3中报错的解决方法(长期更新)

1、ImportError: No module named ‘DjangoUeditor’ 出错原因:安装DjangoUeditor库适用于python2,需要下载适用python3的 下载地址:https://github.com/twz915/DjangoUeditor3 2、python3......

xiaoge2016 ⋅ 57分钟前 ⋅ 0

数据结构与算法之双向链表

一、双向链表 1.双向链表的结点结构 typedef struct DualNode{ ElemType data; struct DualNode *prior; // 前驱结点 struct DualNode *next; // 后继结点}DualNode, *DuL...

aibinxiao ⋅ 今天 ⋅ 0

五大最核心的大数据技术

大数据技术有5个核心部分,数据采集、数据存储、数据清洗、数据挖掘、数据可视化。关于这5个部分,有哪些核心技术?这些技术有哪些潜在价值?看完今天的文章就知道了。 大数据学习群:7165810...

董黎明 ⋅ 今天 ⋅ 0

PhpStorm 头部注释、类注释和函数注释的设置

首先,PhpStorm中文件、类、函数等注释的设置在:setting-》Editor-》FIle and Code Template-》Includes下设置即可,其中方法的默认是这样的: /**${PARAM_DOC}#if (${TYPE_HINT} != "v...

nsns ⋅ 今天 ⋅ 0

spring.net AOP

http://www.springframework.net/doc-latest/reference/html/aop-quickstart.html https://www.cnblogs.com/wujy/archive/2013/04/06/3003120.html AOP系列(一)——ProxyFactoryObject 显式创......

whoisliang ⋅ 今天 ⋅ 0

【HAVENT原创】创建 Dockerfile 生成新的镜像,并发布到 DockerHub

注意:Win7 与 Win10 的版本存在差异,Win7 版本使用 Docker Quickstart Terminal 进入控制台,Win10下面直接用管理员权限打开控制台或者 PowerShell 即可;另外 Win7 下面只能访问 C盘,/ap...

HAVENT ⋅ 今天 ⋅ 0

pom.xml出现web.xml is missing ...解决方案

提示信息应该能看懂。也就是缺少了web.xml文件,<failOnMissingWebXml>被设置成true了。 搜索了一下,Stack Overflow上的答案解决了问题,分享一下。 目前被顶次数最多的回答原文如下: This...

源哥L ⋅ 今天 ⋅ 0

js时间戳与日期格式之间相互转换

1. 将时间戳转换成日期格式 1 2 3 4 5 6 7 8 9 10 11 12 13 14 // 简单的一句代码 var date = new Date(时间戳); //获取一个时间对象 /** 1. 下面是获取时间日期的方法,需要什么样的格式自己...

Jack088 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部