首页 > 其他分享 >计算机字符编码

计算机字符编码

时间:2024-01-31 14:34:52浏览次数:18  
标签:编码 字节 字符 unicode 字符集 Unicode 计算机

目录

基础知识

计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。
通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,
称为"解码",如同密码学中的加密和解密。在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码

字符集(Charset):

是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。
这里的系统可以理解为一个文字系统

字符编码(Character Encoding):

规定了怎样的二进制数标识什么字符:例如ascii字符集中把字符a编码为97

常见字符集名称:

ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集

ASCII码

C英文字符对应的编码就是ascii码

Unicode

Unicode意为统一码万国码,想要将所有的码都用唯一字符表示出来

Unicode的问题

unicode规定了符号的二进制代码,比如说unicode是包含着ascii字符集,

a仍是97编码,但是,整个字符集包含了100多万的字符,所以用何种方式来储存unicode编码就成了问题

如果统一3字节储存,2^24=1600万大抵是够了

那么英文用户第一个不乐意,平时一个字节就能存完但是用了unicode就要翻三倍,所以变长的字符存储方式出现了

utf8

utf8实际上是一种用变长的编码表示unicode字符集的方案

具体的编码方式很简单,只有两条

  1. 对于单字节的符号:字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的;
  2. 对于n字节的符号(n > 1):第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。

下面,还是以汉字严为例,演示如何实现 UTF-8 编码。

严的 Unicode 是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800 - 0000 FFFF),
因此严的 UTF-8 编码需要三个字节,即格式是1110xxxx 10xxxxxx 10xxxxxx。然后,从严的最后一个二进制位开始,
依次从后向前填入格式中的x,多出的位补0。这样就得到了,严的 UTF-8 编码是11100100 10111000 10100101,转换成十六进制就是E4B8A5。

GB2312是什么

为了显示中文字符GB2312规定如果一个字节的数据小于127,那么就是ascii码,和原来的意思相同
但如果>127就是两个字节相连形成的gb2312中规定的中文字符

前面的一个字节(称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE

这样能够凑出7000多个汉字在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,
连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,
而原来在127号以下的那些就叫"半角"字符了。

标签:编码,字节,字符,unicode,字符集,Unicode,计算机
From: https://www.cnblogs.com/liviayu/p/17999191

相关文章

  • 【计算机】字符编码的发展与关系
    【计算机】字符编码的发展与关系编码方案与字符集字符编码说到底就是一种将字符存储在计算机中的方式,如通常会将字符与一个二进制串对应,从而映射到字节流中。而表示字符与二进制串对应关系的表叫做字符集,而具体将对应的二进制串映射到字节流中的方法则叫编码方案。所以说编码方......
  • FFmpeg和Monibuka拉取rtsp(大华摄像头)视频流时未进行URLCode编码导致提示404等报错
    场景Monibucav4(开源流媒体服务器)在Windows上搭建rtmp服务器并实现拉取rtsp视频流以及转换flv播放:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/132474126Nginx搭建RTMP服务器+FFmpeg实现海康威视摄像头预览:https://blog.csdn.net/BADAO_LIUMANG_QIZHI/articl......
  • 【转帖】UTF-8编码发展历史
    https://www.jianshu.com/p/ea91ff32a3c0 1.美国人首先对英文字符编成ASCII码,用一个字节中的低7位表示英文128个字符,高1位统一为02.欧洲人字母上存在注音符,128位不够用,即采用高1位,最多可表示256位3.不同国家字符编码不一致,虽然0--127表示的符号是一样的,但是128--255的......
  • jmeter 接口测试响应unicode编码为中文显示
    添加一个后置处理器beanshellpostprocessor, public StringresUnicoding(StringresMsg){   String[]asciis=resMsg.split("\\\\u");   StringnativeValue=asciis[0];   try   {      for(inti=1;i<asciis.length;i++......
  • 计算机网络之网络协议和体系结构(一)
    1.网络协议的三要素什么是协议?为了保证通信正常进行,必须事先做一些规定,而且通信双方要正确执行这些规定,例如,使用哪种基带编码方式,差错编码和交换技术等。同时,只有双方在这些规定上达成一致,彼此才能能够互相“理解”,从而确保通信的正常进行。这种通信双方必须遵守的规则和约定成为协......
  • 《深入理解计算机系统(原书第3版)》PDF
    内容简介本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统级I/......
  • 《深入理解计算机系统(原书第3版)》PDF
    内容简介本书从程序员的视角详细阐述计算机系统的本质概念,并展示这些概念如何实实在在地影响应用程序的正确性、性能和实用性。全书共12章,主要内容包括信息的表示和处理、程序的机器级表示、处理器体系结构、优化程序性能、存储器层次结构、链接、异常控制流、虚拟存储器、系统......
  • http encode 编码
    uses System.NetEncodingvars:string:=TNetEncoding.URL.Encode('123');//123vars2:string:=TNetEncoding.URL.Encode('abcd');//abcdvars3:string:=TNetEncoding.URL.Encode('ab1cd2');//ab1cd2vars4:string:=TNetEn......
  • 计算机网络
    如同任何一次伟大陆行一样,丈量的次度就是一沓坚实的脚印,2002年公司成立于面试官您好,我是黄河科技学院软件工程专业大4学生赵英波。1969interent互联网元年1946计算机元年网络分类局域网(LAN):指范围内在几百米到10公里内办公楼群或校园网内的计算机相互交互构成的计算机网络。成域......
  • [HAOI2016] 找相同字符
    容斥原理将两个字符串拼接起来(中间用‘#’分隔开),再减去它们内部的贡献height数组支持的最长公共前缀:不仅是长度,也是子串的个数返回值开longlong核心代码与[AHOI2013]差异一致点击查看代码#include<bits/stdc++.h>usingnamespacestd;intsa[500005];intrk[20][5......