文档章节

utf8编码

李勇2
 李勇2
发布于 2015/03/02 09:38
字数 699
阅读 34
收藏 0
点赞 0
评论 0

utf8编码

关于编码问题:

首先需要知道什么是编码为什么要编码, 计算机只能存储一个字节一个字节的二进制信息,所以需要把人可读的这些文字用唯一的方式在计算机内部表示出来, 但是表示的方法不唯一;

例如英文字符 就那么点 所以一个字节 也就是 8个二进制位就能给所有的进行编码,最多能给256个符号编码; 但是ASCII 编码实际只使用了 7位 所以最多编码 128个字符。

但是汉字就不行了, 常用的汉字大概6000多个, 所以 至少需要两个字节, 所以中国government给出了两个字节的编码方案, 叫做GBxxxx (国标的意思)

两个字节16位 最多 有65536 个字符, 所以 给这些汉字用是足够了,但是有个问题 如何让GB码和ASCII码互相兼容, 即这65536 个字符里面关于那些英文字符的编码 在GB码和ASCII码中要一致

方法很简单 要求所有最高位为0的编码表示的是ASCII码, 最高位为1的编码是GB码;

这样实际最多就只能表示32768个汉字了;

但是GB国标码只能在中国用, 世界人民怎么办呢?世界有那么多的语言,每种语言都应该有编码 所以有了一个叫做unicode 统一编码的东西出现了;Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。Unicode用数字0-0x10FFFF来映射这些字符(见百度百科http://baike.baidu.com/view/40801.htm)

当然最后还有一个我们经常见到的UTF8编码, 这个是什么东西?

UTF全称 是Unicode Transformation Format 即unicode 编码的变形形式;

unicode编码是定长度的, 但是对于ASCII字符来讲 有点浪费了, 可以用一个字节表示 ASCII字符, 用多个字节表示 汉字什么的, 这就是变长度编码方式了, 那就需要对unicode编码进行一些变形;



UTF-8的定义:

0开头 latin字符
10开头 一个字符连续字节中的某一个
1111xxx 一个多字节字符的开始  前导1的个数表示字节个数 前导1后面紧跟一个0

汉字一般3个字节

unicode是统一编码
utf8是对unicode的转换编码

unicode    utf8
0xxxxxxx -> 0xxxxxxx   latin 转化成自身
00000yyy  yyxxxxxx  -> 110yyyyy  10xxxxxx  两字节 转化成 两字节
zzzzyyyy  yyxxxxxx->1110zzzz 10yyyyyy 10xxxxxx  两字节转化成三字节(一般汉字就是如此)
000wwwzz zzzzyyyy yyxxxxxx -> 11110www 10zzzzzz 10yyyyyy 10xxxxxx 三字节转化成4字节

本文转载自:http://blog.csdn.net/liyong748/article/details/7555547

共有 人打赏支持
李勇2

李勇2

粉丝 45
博文 188
码字总数 62209
作品 0
广州
程序员
perl 字符集处理

本文内容适用于perl 5.8及其以上版本. perl internal form 在Perl看来, 字符串只有两种形式. 一种是octets, 即8位序列, 也就是我们通常说的字节数组. 另一种utf8编码的字符串,perl管它叫str...

qiaobujian ⋅ 2015/07/04 ⋅ 0

MySQL字符编码解决乱码问题

这几天查找了很多关于mysql对中文字符编码的处理,读了各种零散的文章,最后做了全面的总结,现和大家分享: 字符编码 MySQL字符编码 GBK、GB2312、UTF8区别:http://kongjian.baidu.com/wang...

牧北 ⋅ 2011/11/26 ⋅ 0

修改mysql的编码

修改字符集的方法,就是使用mysql的命令 mysql> SET charactersetclient = utf8 ; mysql> SET charactersetconnection = utf8 ; 使用 mysql> SHOW VARIABLES LIKE 'character%';查看,发现数......

五大三粗 ⋅ 2014/12/23 ⋅ 0

关于MySQL的Warning: Incorrect string value: '\xF0\x9F

关于MySQL提示Warning: Incorrect string value: 'xF0x9Fx98xADxEFxBC...错误的解决方法: 我的表字符集前提是utf-8的,然后修改报错的字段的字符集,这个问题就解决了: ALTER TABLE 数据库...

Airship ⋅ 2016/01/30 ⋅ 1

Mysql中文乱码问题完美解决方案

MySQL会出现中文乱码的原因不外乎下列几点: 1.server本身设定问题,例如还停留在latin1 2.table的语系设定问题(包含character与collation) 3.客户端程式(例如php)的连线语系设定问题 强烈建...

微笑的江豚 ⋅ 2014/11/25 ⋅ 0

SQOOP导入mysql数据库乱码

一、mysql中的编码 mysql> show variables like 'collation_%';+----------------------+-------------------+| Variable_name | Value |+----------------------+-------------------+| co......

脸大的都是胖纸 ⋅ 2015/08/29 ⋅ 0

java写入mysql数据库乱码问题解决方法详解

确保数据库数据表创建的编码一致: 创建数据库的时候: CREATE DATABASE CHARACTER SET 'utf8 ' COLLATE 'utf8generalci'; 注:CHARACTER SET 'utf8 ':这是设置字符编码; COLLATE 'utf8gen...

小木桥 ⋅ 2017/02/24 ⋅ 0

MySQL中UTF8编码的数据在cmd下乱码

花了一下午,解决MySQL在Windows的cmd下中文乱码的问题。 mysql> use abc;Database changedmysql> select * from school;+----------+--------------------+------------------------------......

摆渡者 ⋅ 2015/11/12 ⋅ 2

修改mysql默认字符编码为utf8

MySQL的默认编码是Latin1,不支持中文,要支持中文需要把数据库的默认编码修改为gbk或者utf8。 1、修改数据库字符编码 mysql> alter database mydb character set utf8 ; 2、创建数据库时,指...

hiwill ⋅ 2015/09/08 ⋅ 0

VC2010下Qt5的中文乱码问题

要搞清楚这个问题,先要弄明白编码。但是编码问题实在太复杂,这里肯定讲不开。 我先找一个例子,比如:"中文" 的 Unicode 码点/UTF8编码/GBK 分别是多少。 先去这个网站,输入 "中文" 查询对...

沉默的大绵羊 ⋅ 2013/09/16 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

vbs 取文件大小 字节

dim namedim fs, s'name = Inputbox("姓名")'msgbox(name)set fs = wscript.createobject("scripting.filesystemobject") 'fs为FSO实例if (fs.folderexists("c:\temp"))......

vga ⋅ 9分钟前 ⋅ 0

高并发之Nginx的限流

首先Nginx的版本号有要求,最低为1.11.5 如果低于这个版本,在Nginx的配置中 upstream web_app { server 到达Ip1:端口 max_conns=10; server 到达Ip2:端口 max_conns=10; } server { listen ...

算法之名 ⋅ 今天 ⋅ 0

Spring | IOC AOP 注解 简单使用

写在前面的话 很久没更新笔记了,有人会抱怨:小冯啊,你是不是在偷懒啊,没有学习了。老哥,真的冤枉:我觉得我自己很菜,还在努力学习呢,正在学习Vue.js做管理系统呢。即便这样,我还是不...

Wenyi_Feng ⋅ 今天 ⋅ 0

博客迁移到 https://www.jianshu.com/u/aa501451a235

博客迁移到 https://www.jianshu.com/u/aa501451a235 本博客不再更新

为为02 ⋅ 今天 ⋅ 0

win10怎么彻底关闭自动更新

win10自带的更新每天都很多,每一次下载都要占用大量网络,而且安装要等得时间也蛮久的。 工具/原料 Win10 方法/步骤 单击左下角开始菜单点击设置图标进入设置界面 在设置窗口中输入“服务”...

阿K1225 ⋅ 今天 ⋅ 0

Elasticsearch 6.3.0 SQL功能使用案例分享

The best elasticsearch highlevel java rest api-----bboss Elasticsearch 6.3.0 官方新推出的SQL检索插件非常不错,本文一个实际案例来介绍其使用方法。 1.代码中的sql检索 @Testpu...

bboss ⋅ 今天 ⋅ 0

informix数据库在linux中的安装以及用java/c/c++访问

一、安装前准备 安装JDK(略) 到IBM官网上下载informix软件:iif.12.10.FC9DE.linux-x86_64.tar放在某个大家都可以访问的目录比如:/mypkg,并解压到该目录下。 我也放到了百度云和天翼云上...

wangxuwei ⋅ 今天 ⋅ 0

PHP语言系统ZBLOG或许无法重现月光博客的闪耀历史[图]

最近在写博客,希望通过自己努力打造一个优秀的教育类主题博客,名动江湖,但是问题来了,现在写博客还有前途吗?面对强大的自媒体站点围剿,还有信心和可能型吗? 至于程序部分,我选择了P...

原创小博客 ⋅ 今天 ⋅ 0

IntelliJ IDEA 2018.1新特性

工欲善其事必先利其器,如果有一款IDE可以让你更高效地专注于开发以及源码阅读,为什么不试一试? 本文转载自:netty技术内幕 3月27日,jetbrains正式发布期待已久的IntelliJ IDEA 2018.1,再...

Romane ⋅ 今天 ⋅ 0

浅谈设计模式之工厂模式

工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 在工厂模式中,我们在创建对象时不会对客户端暴露创建逻...

佛系程序猿灬 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部