gbk, unicode, utf-8的关系

gbk与unicode的映射表 按照Java代码的说明可以找到如下文字:    Code Page 936 (CP936) is the most popular implementation of GBK.    A mapping to Unicode is provided by Microsoft:      http://www.microsoft.com/typography/unicode/936.txt下面的 阅读详情

网上已经有很多文章解析这三者的关系,可惜看了之后仍然似懂非懂,原因在于大部分文章都偏重理论的解释,而缺少真枪真刀的例子。本文力求以一个短小精干的实例,试图解析这三者的关系。

 

任何文字,它在盘磁上,都是若干个0、1的组合。

同一个文字,在不同的编码规范中,它的0、1组合可能是不一样的。例如,“我”字的三种编码如下:

 

gbk:           0xCE 0xD2

unicode:     0x62 0x11

utf-8:          0xE6 0x88 0x91

 

可见,gbk、unicode都使用两个字节来表示一个汉字,而utf-8则使用了三个字节。 gbk与unicode有一个映射表:http://www.chi2ko.com/jingyan/gbk2uni.htm,在上面可以查到“我”字的编码。

 

那么utf-8又是什么东西,其实“我”字的utf-8编码里,含有了unicode的编码信息(稍后解释)。utf-8是从老外的立场提出来的,因为他们觉得按照unicode的编码规范,即使是一个英文字母,也需要用两个字节(第一个字节为0x00)来表示,这对于一篇纯英文的文章,其大小相当于使用ASCII编码的两倍,对磁盘是很大的浪费。所以他们提出了utf-8,对于他们使用较少的中文,用三个字节来表示,而对于英文字母,则使用一字节即可表示。

 

utf-8使用不定长的编码方式,对于“我”字,它使用了三个字节,把这三个字节变成二进制格式:

 

0xE6 0x88 0x91 => 11100110 10001000 10010001

 

对比一下“我”字的unicode编码的二进制表示:

 

0x62 0x11         => 0110 0010 0001 0001

 

若你把utf-8的二进制格式中的加粗部分(1110 10 10)去掉,你会惊喜的发现,剩余的部分


计算机码ASCII、Unicode、GBK、UTF-8之间的关系 对于乱码问题,一直让人头痛;本人在工作中经常受乱码问题骚扰,因此,不了解一些码的常识,似乎已经无法说的下去,终于在参考恶补科普,因此写出下文以记录。 阅读详情

相关推荐

常见汉字的Unicode和GB2312映射表

在开发stm32时,从网上接收到utf8的数据流中包含汉字,如果要正确的在串口中打印汉字的话,就要把utf8(一个汉字3字节)转为GB2312(一个汉字2字节),这个过程不能直接转化,因为GB2312只有和16位的Unicode有映射,所以要先把utf8转为Unicode(这个网上有很多教程,不包含在本资料内),然后2分法查表就能找到GB2312对应映射了。

GB18030编码研究以及GBK、GB18030与Unicode的映射

GB18030编码研究以及GBK、GB18030与Unicode的映射 GB18030有两个版本:GB18030-2000和GB18030-2005。在本文中,没有指明版本的GB18030是指GB18030-2005。本文讨论了以下问题: GB2312有682个图形符号,都放在1区。GBK的1区有717个图形符号,5区有166个图形符号,一共有883个图形符号。GB18030的1区有728个...

技术代码资料库 583

GBK和Unicode的对照表

GBk和unicode的转换对照表,用于解决编码转换的问题。

ASCII、Unicode、GBK、UTF-8之间的关系

一、ASCII编码ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。...

change the world by python 2万+

GBK与Unicode码对照表.rar

GBK与Unicode码对照表 ,包含中文、中文标点、符号等

C#串口通讯实战:如何用SerialPort类搞定工业传感器数据采集(附完整代码)

本文详细介绍了如何使用C#的SerialPort类实现工业级传感器数据采集,涵盖串口通讯基础配置、数据帧处理、异常恢复机制及性能优化策略。通过实战代码示例,帮助开发者构建稳定可靠的工业数据采集系统,特别适合需要处理高频数据采集和复杂工业环境的场景。

weixin_42525551的博客 1088

Java 中 char 和 Unicode、UTF-8、UTF-16、ASCII、GBK 的关系

关于这几种字符编码的关系,经过各种资料研究,总结如下图(请右键在新标签页打开查看或者下载后使用看图工具放大查看):1[0-127]A1-F7A1-A9XX7F4~6HEX由于只规定了表示符号的二进制代码,却没有规定如何存储这个二进制代码。所以如何存储有不同的实现。而就是针对的不同存储方式的具体实现。0-1271282340000~FFFF注意:很多资料和文章中将 UTF-8 和 UTF-16 都称为定长编码,但实际上它们是可变长编码的,例如一个中文汉字用 UTF-8 表示的话,就需要 3 个字节。

川峰的博客 2670

Opencv2.4.9源码分析——HoughCircles

图形可以用一些参数进行表示,标准霍夫变换的原理就是把图像空间转换成参数空间(即霍夫空间),例如霍夫变换的直线检测就是在距离-角度空间内进行检测。圆可以表示成: (x-a)2+(y-b)2=r2                   (1) 其中a和b表示圆心坐标,r表示圆半径,因此霍夫变换的圆检测就是在这三个参数组成的三维空间内进行检测。 原则上,霍夫变换可以检测任何形状。但复杂的形状需要的

赵春江的专栏 3万+

ASCII、Unicode、GBK、UTF-8之间的关系(转载)

一、ASCII编码 ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是现今最通用的单字节编码系统,并等同于国际标准ISO/IEC 646。 ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写...

baogenwen的博客 881

AWVS安装与使用教程

Acunetix Web Vulnerability Scanner(简称AWVS)是一款知名的自动化网络漏洞扫描工具,它通过网络爬虫测试你的网站安全,检测流行安全漏洞。它可以扫描任何可通过Web浏览器访问的和遵循HTTP/HTTPS规则的Web站点和Web应用程序。适用于任何中小型和大型企业的内联网、外延网和面向客户、雇员、厂商和其它人员的Web网站。WVS可以通过检查SQL注入攻击漏洞、XSS跨站脚本攻击漏洞等漏洞来审核Web应用程序的安全性。

qq_59607911的博客 4099

【RT-DETR有效改进】计算训练好权重文件对应的FPS、推理每张图片的平均时间(科研必备)

本文给大家带来的改进机制是利用我们训练好的权重文件计算FPS,同时打印每张图片所利用的平均时间,模型大小(以MB为单位),同时支持batch_size功能的选择,对于轻量化模型的读者来说,本文的内容对你一定有帮助,可以清晰帮你展示出模型速度性能的提升以及轻量化的效果(模型大小),对于以提高精度为目的的读者本文也能够帮助大家展示出现阶段的模型速度指标。所以本文的内容是十分有用的机制,对于大家发表论文来说,下面的图片为运行后的效果可以看到,该有的指标均已打印(本文内容为我独家创新,全网无第二份)下面是效果图和文

Snu77的博客 3630

ASCII GBK Unicode UTF-8 区别和关系 编码关系

ASCII GBK Unicode UTF-8 区别和关系

shen4402的博客 845

超详细教程YoloV8官方推荐免费数据集网站Roboflow一键导出Voc、COCO、Yolo、Csv等格式

YoloV8官方推荐了一个数据集网站,就是Roboflow。Roboflow是一个数据集管理平台,提供了免费的数据集,同时也支持上传自己的数据集进行格式转换。使用Roboflow,开发者可以方便地获取所需格式的数据集,无需手动转换格式。此外,Roboflow还提供了多种数据预处理、数据增强等功能,可帮助开发者更好地优化训练数据

Snu77的博客 2万+

一个汉字在python2 和 python3 中分别以 gbk和utf-8中分别占几个字节,和unicode 关系

在GBK编码中,无论是Python 2还是Python 3,一个汉字都占用2个字节。在UTF-8编码中,无论是Python 2还是Python 3,一个汉字通常占用3个字节。

samoyan的博客,记录技术成长~ 1256

uniApp微信小程序:利用live-pusher人脸活体检测功能+完整示例代码,uniapp使用live-pusher直播推流组件实现人脸验证-活体检测,检测人脸中的动作包括眨眼、张嘴、左右摇头动作

UniApp 使用 live-pusher 实现人脸活体检测(附完整源码)uniapp开发微信小程序人脸检测活体检测,在uni-app的微信小程序项目中使用live-pusher实现人脸识别,uniapp使用live-pusher实现模拟人脸识别效果,张张嘴、眨眨眼、向左摇头、向右摇头等动作,免费使用人脸活体检测的插件方案,uniapp小程序怎么免费使用人脸活体,直播推流,UNIAPP微信小程序使用live-pusher实现人脸识别(拍照)功能,在uni-app项目中实现人脸识别,既使用uni-app中的l

✅ 精选推荐文章 3014

化工设备应力分析软件:STAAD.Pro二次开发_(24).非线性分析技术

在STAAD.Pro 中,可以通过命令。

kkchenjj的博客 662

理清Unicode与UTF-8、ANSI与GB2312、GBK的关系,字符集和编码

需计算机一年多了,始终对字符集感到迷糊,下定决心好好理一理,今天终于真相大白。 1、Unicode与UTF-8 Unicode是字符集 UTF-8是对Unicode的编码 原因很简单,使用有些常用字符的时候太浪费空间,使用UTF-8编码可以节省空间。(还有UTF-16编码方式等等) Unicode是全球的标准,统一了计算机字符集。 2、GB2312与GBK GB2312是GBK的子集,每个字符占两...

a553455的博客 470

[23]-->变长SPI接口

然而,FPGA技术复杂,学习门槛较高,许多人(初学者或学生)在学习过程中面临诸多挑战。(1)模式0:SCK串行时钟线空闲是为低电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 0,CPHA=0;(2)模式1:SCK串行时钟线空闲是为低电平,数据在SCK时钟的下降沿被采样,数据在SCK时钟的上升沿切换,CPOL= 0,CPHA=1;(3)模式3:SCK串行时钟线空闲是为高电平,数据在SCK时钟的上升沿被采样,数据在SCK时钟的下降沿切换,CPOL= 1,CPHA=1;

m0_46498597的博客 178

简述 ascii、unicode、utf-8、gbk 的关系

简述 ascii、unicode、utf-8、gbk 的关系 ascii 是最早美国用的标准信息交换码,把所有的字母的大小写,各种符号用 二进制来表示,共有256中,加入些拉丁文等字符,1bytes代表一个字符, Unicode是为了统一世界各国语言的不用,统一用2个bytes代表一个字符,可以表达2**16=65556个,称为万国语言,特点:速度快,但浪费空间, 可以用在内存处

m0_37777640的博客 4703

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

编码和编码格式,unicode和GBK、UTF-8的关系

首先明确几点: unicode是一种“编码”,所谓编码就是一个编号(数字)到字符的一种映射关系,就仅仅是一种一对一的映射而已,可以理解成一个很大的对应表格GBK、UTF-8是一种“编码格式”,是用来序列化或存储1中提到的那个“编号(数字)”的一种“格式”;GBK和UTF-8都是用来序列化或存储unicode编码的数据的,但是分别是2种不同的格式; 他们俩除了格式不一样之外,他们所关心的uni

1850

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

字符编码ascii、unicode、utf-8、gbk 的关系

ASCII码: 计算机是美国人发明和最早使用的,他们为了解决计算机处理字符串的问题,就将数字字母和一些常用的符号做成了一套编码,这个编码就是ASCII码。ASC码II包括数字大小写字母和常用符号,一共128个,1字节(Byte)=8bit,8bit能表示的最大数是256,所以ASIIC编码中一个字符的大小就是1Byte Unicode编码: 计算机进入中国后,ASCII完全...

bacaijiao94296831的博客 213

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

Unicode UCS UTF-8 GBK BIG5的关系

简单来说,unicode,gbk和大五码就是编码的值,而utf-8,uft-16之类就是这个值的表现形式.而前面那三种编码是一兼容的,同一个汉字,那三个码值是完全不一样的.如"汉"的uncode值与gbk就是不一样的,uncode为0x6C49(wchar_t c[2]=L"汉";),gbk为0xBABA(与ANSI相同char c[3]="汉";),而uft-8码,就是把那个值表现的形式.u

I am a coder 863

各种编码格式(GB2312,GBK,GB18030,unicode,utf-8)之间的关系

汉字常用编码格式 为了在屏幕上显示字符。需要下面几个步骤: 制作所有字符对应的字模。比如大写字母A长什么样。这个模样就是最终显示在屏幕上图形,即我们看到的字符A。 为对所有的字符进行编码。比如大写字母A的编码为0x41. 由于字符的数量远大于一个字节,所以当字符编码进行存储、传输时,需要给它们指定格式。如怎样确定某个字符的编码是一字节还是多字节。如0xC0 0xEE代表一个字符的编码(0xC0E...

guoweilkd的博客 2万+
上一篇: Hacking Custom Authentication Providers with Grails Spring Security
下一篇: 把gbk的编码按utf-8来解码,可能导致的不可恢复的错误
luckarecs
博客等级 码龄17年 118粉丝 35原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值