UTF8
来源:互联网 发布:windows核心编程 编辑:程序博客网 时间:2024/05/23 02:03
UTF-8的字节是可变的。可以占用一字节也可以占用二字节,三字节,四字节等
ASCII 码的:0-127 在UTF-8中也是只占一个字节的内容,和ASCII一样,没有变化,比如:UTF-8 中 a 的二进制就是:1100001,7位,因为ASCII 没有负数位,所以,只用了后7位,第8位是用0代替,a完整的二进制码就是:01100001
汉字在UTF-8中 基本是占用3字节,也有4字节的不常用字符。
例:汉字 “一” 的二进制码是:11100100 10111000 10000000
使用三个字节。第一个字节的,前三个‘1’ 表示,这个汉字使用的字节数量,几个‘1’表示用几个字节,第二个字节和第三个字节的‘10’开头都是固定的格式。
一个两字节的汉字的二进制编码格式就是:110xxxxx 10xxxxxx (‘x‘占11位)
一个三字节的汉字的二进制编码格式就是:1110xxxx 10xxxxxx 10xxxxxx (‘x‘占16位)
一个四字节的汉字的二进制编码格式就是:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx (‘x‘占21位)
'x' 就是我们要使用的值,将所有的'x'连成一个二进制字符串,
如例“一”的二进制 11100100 10111000 10000000 取出其中我们需要的 01001110 00000000,将其换算成十六进制得:4E00,
我们只要输出 一 就可以显示汉字一了。
关于PHP中文截取无乱码的办法,大家也可以参照一下这种处理方法,或 系统自带的mb_substr()
将汉字转成二进制的方法:
//汉字是三个字节,所以strlen($n) 等于 3,这里会分三次,取出这三个字节里的值,用回ord读取单字节返十进制,再用 decbin 把十进制转成二进制。
//此处存在个问题就是,前提我们得知道,这个字是个UTF-8格式的汉字才可以, 如果是GB2312,虽然也可以用这个办法取得正确的二进制串,但如果用上面所说的组合格式及办法就会出现字不对的情况。GB2312是使用二字节的。而且也没有1110xxxx 这类的格式。
//如果是读取一个文件,可以读取文件的头三个字节, UTF-8的文件要求前三个字节是:EF、BB、BF,其后才是正常的文件格式。
$n = '汉';for($i = 0; $i < strlen($n); ++$i){ decbin(ord($n[$i])); }
UTF-8
这是汉字转成二进制串的函数,
- UTF8
- utf8
- utf8
- UTF8
- UTF8
- utf8
- utf8
- UTF8
- UTF8
- utf8 && utf8+
- UTF8 与 UTF8 +BOM
- perl utf8 no utf8 utf8数据库
- utf8规范
- 转换UTF8
- mysql utf8
- maveb utf8
- UTF8编码
- UTF8笔记
- 等额本金和等额本息两种贷款方式的比较
- SQL WHERE 子句
- ip_vs实现分析7
- 简单封装VLC--LunVlc-library
- Android性能优化典例(内存)
- UTF8
- 使用sklearn做单机特征工程
- Android okHttp封装库(1) -- okhttp-utils
- 从无到有系列之flume-kafka整合01
- SQL AND & OR 运算符
- JS中JSON字符串和对象相互转换
- Android正则表达式工具类
- mysql数据库sql语句备忘录
- ip_vs实现分析8