谈谈php中的unicode和utf8编码_第1页
谈谈php中的unicode和utf8编码_第2页
谈谈php中的unicode和utf8编码_第3页
谈谈php中的unicode和utf8编码_第4页
谈谈php中的unicode和utf8编码_第5页
已阅读5页,还剩1页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

本文格式为Word版,下载可任意编辑——谈谈php中的unicode和utf8编码谈谈php中的unicode和utf8编码

本文给大家深入议论了unicode和utf8这两种编码的关系,理解好了会察觉网上一些旧的东西,是严重多余兼过期的,由于从utf-8流行开头到现在,早已经由原来六字节可变编码到实际完全居于unicodeUCS-2的稳定阶段。

重新熟悉unicode和utf8编码

直到今天,切实的说是方才,我才知道UTF-8编码和Unicode编码是不一样的,是有识别的囧

他们之间是有确定的联系的,看看他们的识别:

UTF-8的长度是不确定的,有可能是1、2、3字节

Unicode长度确定,2个字节(USC-2)

UTF-8可以和Unicode彼此转换

unicode和utf8的关系

Unicode16进制

UTF-8二进制

0000-007F0xxxxxxx

0080-07FF110xxxxx10xxxxxx

0800-FFFF1110xxxx10xxxxxx10xxxxxx

上面的表格有2个意思,第一个显而易见就是说Unicode和UTF-8字符范围的对应,还有一个可以看出Unicode怎么和UTF-8彼此转换:

先说UTF-8到Unicode的转换

UTF-8编码的二进制和上面的3种格式举行匹配,匹配到之后去掉固定位(表格中的非x位置),然后从右到左每8位一组,不够8位左边不领,凑够2个字节16bits,这16bits所表示的就是UTF-8对应的Unicode编码,看看下面几个例子:

上面图片中的文字编码格式为UTF-8,可以用WinHex看到其16进制表示

复制代码代码如下:

字符=UTF-8=UTF-8二进制=去掉固定位置凑够16位的二进制=16进制

汉=E6B189=111001101011000110001001=0110110001001001=6C49

字=E5AD97=111001011010110110010111=0101101101010111=5B57

#下面是在chrome命令行下面运行的结果

\u6C49

\u5B57

#到这里的'话,从UTF-8转换到Unicode已经是一件分外轻易的事了,看看转换的伪代码

读取一个字节,11100110

判断该UTF-8字符的格式,属于第三种,3个字节

持续读取2个字节得到111001011010110110010111

按照格式去掉固定位101101101010111

不够16位,左边补零0101101101010111=5B57

再看看从Unicode到UTF-8的转换

复制代码代码如下:

5B57

获取5B57所在的Unicode范围,0800=5B57=FFFF,得知5B57的UTF-8有三个字节,形式为1110xxxx10xxxxxx10xxxxxx

获取5B57的二进制编码101101101010111

用上一步骤的二进制编码从右至左拼接UTF-8编码111001011010110110010111

说说问题

再说说今天这个问题的起因,从前端输入好多单词,UTF-8格式每个词最多30个字节,因此会在前端和后台分别做验证,javascript用的是Unicode编码,后端程序用的是UTF-8编码,现在的解决手段是这样

前端

?

1

2

3

4

谈谈php中的unicode和utf8编码

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

functionutf8_bytesstr

varlen=0,unicode;

forvari=0;istr.length;i++

unicode=str.charCodeAti;

ifunicode0x0080

++len;

elseifunicode0x0800

len+=2;

elseifunicode=0xFFFF

len+=3;

else

throwcharactersmustbeUSC-2!!

returnlen;

#例子

utf8_bytesasdasdas

8

utf8_bytesyrt燕睿涛

12

后台

?

1

2

3

4

#对于GBK字符串

$len=ceils

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论