字符串编码原理--PHP数组原理与高级应用
基础知识
1.有几种表达方式(查看手册)
2.单引号和双引号的区别,双引号解析变量、\n,\t等,八进制与十六进制编码
内部存储方式
c语言中怎么表示字符串,结构体存储了字符指针和长度
1.字符串可以用[]和{}访问某个字符
2.字符串长度可以达到2G(内存)
3.常见的函数都是单字节处理方式
4.php字符串是二进制安全的。二进制安全:在C语言中,如果$str = '1235\0sss';\0的位置是被截断的,这种就不是二进制安全的,在PHP中,php字符串的结构体因为有len长度的属性,是不会被截断的,原样输出,所以为二进制安全的。
5.用超出字符串长度的下标写入将会拉长字符串并以空格填充。非整数类型下标会被转换成整数。非法类型下标会产生一个e_notice级别错误
串行化
把其它不方便存储的数据类型array,object等转换为字符串,就叫串行化
json_encode、serialize、var_export常用的串行化函数
json_encode、serialize性能对比json_encode略胜一筹但并不明显。
var_export将数组转换成原样的字符串并打印到屏幕。带第二个参数true则返回值,将内容写入文件的时候常用。将数组存储在文件里,当做文件缓存的形式,是非常有用的
编码
b bit位 二进制最小的信息单位 8b=1B
B byte字节
字符
字符集
字符编码
ASCII(美国信息交换专属编码),基于拉丁字母的一套编码,使用7位表示一个字符,共128个字符
ISO-8859-1 ASCII的扩展码,别名latin1,主要是后来欧洲人使用
美国西欧人民很幸福,其他国家怎么办
BIG5是最开始的时候台湾5家计算机厂商创建的中文编码,也叫大五码
GB2312是由中国国家标准总局发布,共94段*94个元素,也叫区位码6763个汉字
GBK是在GB2312 的基础上添加了许多生僻的汉字
对于其他国家也有自己的编码方式,ISO组织商讨解决方案,UNICODE就出现了,总数超过65535个字符,两个字节表示,后用4个字节表示1个字符
UNICODE是字符集,UTF-8,UTF-16,UTF-32是编码解决方案
UTF-8和GBK编码原理
GBK编码方式
区位码 打开编码源码,可以看到是一块一块的,一块叫做区,其中的第几行几列叫作位,所以叫区位码
国标码 并不是计算机内使用的计算机编码
机内码
UTF编码方式
如何获取一个汉字的拼音
UTF-8编码
UTF的BOM头,用来规范编码在不同机器的显示顺序
如何判断输入的文字是GBK还是UTF-8
编码的总结,UTF-8对程序员是有利的,一些函数比如json_encode只支持UTF-8,GBK更加节约空间
php数组原理与高级应用
基础
定义构造数组,array(),[],$arr[0]='22',对象也可以当做数组来用
key,value的定义条件
访问
数组的删除unset
其他类型转换为数组
数组的遍历
数组遍历foreach的原理
数组底层结构
数组的内部存储结构
哈希表的原理
HashTable结构体
bucket结构体
数组的扩容问题
排序的原理
需要关注的知识点
php位运算
php输入流
数组与数据结构
字符串编码原理--PHP数组原理与高级应用的更多相关文章
- java中字符串编码转换
Java 正确的做字符串编码转换 字符串的内部表示? 字符串在java中统一用unicode表示( 即utf-16 LE) , 对于 String s = "你好哦!"; 如果源码 ...
- 不得不知道的Python字符串编码相关的知识
开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII character 'ascii' codec can't encode characters in posi ...
- 【转载】不得不知道的Python字符串编码相关的知识
原文地址:http://www.cnblogs.com/Xjng/p/5093905.html 开发经常会遇到各种字符串编码的问题,例如报错SyntaxError: Non-ASCII charact ...
- PHP字符串——编码与转义
因为PHP程序经常与HTML页.Web地址(URL)以及数据库交互,所以PHP提供一些函数来帮助你处理这些类型的数据.HTML.Web页地址和数据库命令都是字符串,但是它们每个都要求不同的字符以不同的 ...
- JAVA 字符串编码总结
java 为了解决跨平台,字符串编码的有点特殊 String newStr = new String(oldStr.getBytes(), "UTF-8");java中的Strin ...
- 完整的java字符串编码转换代码
package book.String; import java.io.UnsupportedEncodingException; /** *//** * 转换字符串的编码 * @author joe ...
- JAVA字符串编码转换常用类
无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其在web应用中常常需要处理中文字符,这时就需要进行字符串的编码转换,将字符串编码转换为GBK或者GB2312.一.关键技术点: ...
- javascript中的字符串编码、字符串方法详解
js中的字符串是一种类数组,采用UTF-16编码的Unicode字符集,意味字符串的每个字符可用下标方式获取,而每个字符串在内存中都是一个16位值组成的序列.js对字符串的各项操作均是在对16位值进行 ...
- java字符串应用之字符串编码转换
[转载]原文地址:https://blog.csdn.net/zhouyong80/article/details/1900100 无论是对程序的本地化还是国际化,都会涉及到字符编码的转换的问题.尤其 ...
随机推荐
- linux进程的休眠(等待队列)【转】
转自:http://www.cnblogs.com/noaming1900/archive/2011/01/14/1935526.html (转载) bojan 收录于2010-10-09 阅读数: ...
- MYSQL使用外键进行优化
#转载请联系 假如你是京东的数据库管理员,你现在管理着这样一个数据库. mysql> select * from goods; +----+--------------------------- ...
- 【SQL】事务
1.事务的开始结束: START TRANSACTION :标记事务开始 COMMIT :标记事务成功结束 ROLLBACK :标记事务夭折 2.设定事务只读.读写性质: SET TRANSACTIO ...
- Selenium2+python自动化34-获取百度输入联想词【转载】
前言 最近有小伙伴问百度输入后,输入框下方的联想词如何定位到,这个其实难度不大,用前面所讲的元素定位完全可以定位到的. 本篇以百度输入框输入关键字匹配后,打印出联想词汇. 一.定位输入框联想词 1.首 ...
- hdu 3768(spfa+暴力)
Shopping Time Limit: 10000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total S ...
- C# T4使用
最近升级我们的框架到微服务了,而且是dotnetcore 2.0. 然后一个新的框架,最基本的Model和与数据库交互的Repository,我们都是要利用T4自动生成的. 首先这个是代码结构,在这个 ...
- 训练指南 UVA - 11354(最小生成树 + 倍增LCA)
layout: post title: 训练指南 UVA - 11354(最小生成树 + 倍增LCA) author: "luowentaoaa" catalog: true ma ...
- POJ 1236 Network Of Schools (强连通分量缩点求出度为0的和入度为0的分量个数)
Network of Schools A number of schools are connected to a computer network. Agreements have been dev ...
- 16、Django实战第16天:优化url
今天完成的是一个优化url.... 前面我们所有的url都是配置在一个mxonline.urls.py中.因为我们根据项目实际情况配置了多个app,那么我们相应的url是可以配置在自己的app中的,这 ...
- RabbitMQ (五) 订阅者模式之分发模式 ( fanout )
前面讲到了简单队列和工作队列. 这两种队列有个非常明显的缺点 : 生产者发送的消息,只能进入到一个队列. 消息只能进入到一个队列就意味着消息只能被一个消费者消费. 尽管工作队列模式中,一个队列中的消息 ...