当前位置:网站首页>关于编码(ASCII / Unicode / UTF8)
关于编码(ASCII / Unicode / UTF8)
2022-07-20 05:31:00 【啦啦啦001】
1. 为什么要使用编码?
我们知道计算机说到底都是用二进制的0、1的排列组合来表示数据的,因此就需要有一个规范,来枚举规定每个字符对应哪个0、1的排列组合,这样的规范就是字符集编码。
而最早的计算机在设计时采用8个比特(bit)作为一个字节(byte),所以,一个字节能表示的最大的整数就是255(这里解释下:因为一个字节有8位,每位只能有两个数字0和1,用二进制表示最大就是8个1,转为十进制就是255)
2. ASCII
计算机最早是由美国人发明的,所以只涵盖了英文字母、数字和一部分符号,因此最早只有128个字符被编码到计算机里。这个编码表被称为 ASCII 编码,比如大写字母A的编码是65,小写字母z的编码是122。
缺点:不能表示所有字符
3. Unicode(万国码)
随着计算机越来越流行,各个国家都开始使用,比如中国制定了GB2312 编码,用来把中文编进去。日本把日文编到 Shift_JIS 里,韩国把韩文编到 Euc-kr 里,这样一来,全世界有上百种语言,各国有各国的标准,就会不可避免地出现冲突,导致显示出来会有乱码。
因此,Unicode (万国码)应运而生。Unicode 一种编码,将世界上所有的符号都纳入其中,每个符号都有一个独一无二的编码,这样解决了乱码的问题。
Unicode 码的0-127个字符和 ASCII 码是一样的,所以兼容ASCII 。
缺点:所有字符都占 2 个字节。造成了空间浪费。
3. UTF-8
UTF-8 是一种可变长的编码方式,它可以根据不同的符号而变化字节长度。
字母占 1 个字节,汉字占 3 个字节。只有很生僻的字符才会被编码成 4-6 个字节。
其他:
在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输的时候,就转换为 UTF-8 编码。
用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符到内存里,编辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到文件。
浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再传输到浏览器。
边栏推荐
- [sort] bucket sort and cardinal sort
- [dish of learning notes dog learning C] data storage
- Oracle按中文排序
- Los Angeles: t226229 arithmetic series
- (Luogu) p1605 maze (once you enter the deep search, it's like a sea of bitterness, and from then on, it's a big die)
- mysql_创建临时表
- 输入一个整数和一棵二元树
- 【C】 Introduction to C language
- 【学习笔记之菜Dog学C】指针进阶
- [dish of learning notes, dog learning C] first learn operators and original code, inverse code, complement code
猜你喜欢
牛客BM6 判断链表中是否有环
Introduction à la théorie des micro - services
【学习笔记之菜Dog学C】初识常见关键字、#define定义常量和宏
Visual Studio 快捷键的使用技巧
[dish of learning notes dog learning C] detailed array name
ClickHouse启动失败_Unit clickhouse-server.service entered failed state
【C】 Introduction to C language
[dish of learning notes dog learning C] data storage
[dish of learning notes dog learning C] function recursion
选择排序/基数排序
随机推荐
【学习笔记之菜Dog学C】求值表达式
ECMAScript新特性
OpenLayers 画圆画椭圆
【学习笔记之菜Dog学C】详解操作符
洛谷比赛:T226229 等差数列
如何用两个栈模拟实现一个队列
数组常用方法
Shell 之 if/for/while/case 案例
[dish of learning notes, dog learning C] minesweeping game
Basic syntax of symbol, iterator and generator in ES6
【学习笔记之菜Dog学C】初识操作符和原码、反码、补码
Better to struggle for the future than regret the past
Preparation of 5-FU / dex-g-pla nanoparticles /bsa agncs Pei nanoparticles /cu (DDC) 2 protein nanoparticles
mysql_创建临时表
xshell安装完,启动报错:由于找不到 mfc110.dll,无法继续执行代码。重新安装程序可能会解决此问题
mysql_备份还原_指定表_备份表_还原表_innobackup
【学习笔记之菜Dog学C】练习
页面性能:如何系统地优化页面?
试题 C: 刷题统计
js事件流 (捕获阶段、目标阶段、冒泡阶段)取消浏览器的默认冒泡行为