首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >【案例】中国银联、光大银行基于区块链的可信电子凭证系统

【案例】中国银联、光大银行基于区块链的可信电子凭证系统

作者头像
数据猿
发布于 2018-04-19 08:51:27
发布于 2018-04-19 08:51:27
2.2K0
举报
文章被收录于专栏:数据猿数据猿

近年来,包括银行、证券、保险等在内的众多金融行业成为区块链发展和研究的重要倡导者和参与者,这使得区块链技术在交易结算、贸易金融、股权、票据、金融衍生品、信贷、反洗钱/反诈骗、供应链金融等多个领域的应用受到了从业者的广泛关注。

官网 | www.datayuan.cn

微信公众号ID | datayuancn

本篇案例为数据猿推出的“金融科技价值—数据驱动金融商业裂变”大型主题策划活动第一部分的文章/案例/产品征集部分;感谢 趣链科技 的投递

1、企业名称

中国银联、光大银行

2、所属分类

金融科技 · 大数据安全

3、案例背景

近年来,包括银行、证券、保险等在内的众多金融行业成为区块链发展和研究的重要倡导者和参与者,这使得区块链技术在交易结算、贸易金融、股权、票据、金融衍生品、信贷、反洗钱/反诈骗、供应链金融等多个领域的应用受到了从业者的广泛关注。但面对如火如荼的区块链发展热潮,大家也清醒地认识到,区块链技术在金融业的落地并不是一蹴而就的事情,故我们选择在可信凭证系统这个场景上进行区块链的落地工作。

本系统是根据传统的电子凭证业务的痛点,如存储在第三方系统中的电子凭证易被篡改、不同机构间的电子邮件无法互联互通、依赖公信力成为业务发展的瓶颈等等原因,导致无法发挥电子凭证的优越性。

所以,系统运用区块链的技术可以解决以上问题。将电子凭证在数据表中存储后,将数据进行哈希加密,然后进行共识认证,将经过所有节点共识的数据存储在区块链中,保证数据的一致性、完整性和安全性。继而保证数据的完全可信任,并且可对数据进行跨行的高效溯源查询。

从长远上来讲,业务参与各方的合法权益得到了真正的保证,为取消纸质凭证实现完全无纸化打下基础。

4、实施时间

需求分析阶段:2017.3.22-2017.4.5

系统设计阶段:2017.4.6-2017.4.30

系统开发阶段:2017.5.1-2017.6.10

系统集成与测试:2017.7.1-2017.7.19

系统部署与验收:第一次投产2017.7.19;第二次投产2017.8.24

5、应用场景

5.1、存证业务

顾客在门店POS机进行刷卡消费,并进行电子签名;

(1) 后台系统将电子凭证(包括凭证信息和电子签名图片)在数据表中存储(日终批量);

(2) 存储的数据进行哈希加密;

(3) 区块链内所有节点对数据进行共识验证,再次加密;

(4) 将经过所有节点共识的数据存储在区块链中;

(5) 通过区块链达成共识的数据,可以保证一致性、完整性和安全性。可以保证数据的完全可信任,并且可对数据进行跨行的高效溯源查询。

5.2、查询业务

因为本行POS机刷卡可直接调用内部数据库进行查询,所以在此流程上只讨论当进行跨行刷卡时的跨行查询业务处理流程。

(1) 用户向发卡行发起差错处理请求;

(2) 发卡行通过银联差错处理平台向收单行请求差错处理;

(3) 收单行接到请求后调取签购单并返回给差错处理平台;

(4) 差错处理平台通过可信凭证系统进行签购单校验;

(5) 校验成功,则将签购单返回发卡行;

(6) 不满足6中条件则拒绝此请求;

(7)发卡行收到可信赖的签购单后反馈给用户。

6、面临挑战

当前POS机签购单无论是纸质版还是电子版都存在着单据保存数据量大、调单处理繁琐缓慢等问题,不利于单据的存证和调取工作。根据该现状和问题,对本项目提出如下功能需求:

(1)在当前POS机签购单存证系统的基础上,使用区块链技术构建签购单存证数据库;

(2)建立光大与银联之间跨区域的联盟链;

(3)将电子签购单的哈希值存到联盟链中;

(4)在调用电子签购单的时候,使用联盟链中的哈希数据对其他方提供的电子签购单进行验证;

(5)与当前POS机签购单存证系统无缝对接;

(6)符合监管规定,满足监管要求。

7、数据支持

根据业务部门提供的数据,2015年Q4共有1500万笔交易量;2016年Q4共产生2000万笔交易量;年增长33%,预计未来三年季度交易量4750万,由二八原则得到为24.2TPS。其中,按照每个月500w条交易量预计,交易类型为普通存证数据,约会产生3-4GB的区块链数据。

数据来源:光大银行POS单信息,用户进行POS刷卡消费的同时会将生成的电子POS单信息进行Hash并发送给区块链平台。

8、应用技术/实施过程

8.1应用技术:

8.1.1系统功能架构

整个系统的架构如下图1所示,在封装好的Hyperchain平台外部,分别链接四个中国银联的节点和四个光大银行的Nginx节点(光大银行的每个Nginx节点分别与其四个节点相连),两家机构分别接入区块链节点。整个区块链系统通过一个IFT系统与POSP系统相连。

图1 系统功能架构图

8.1.2平台内部架构

Hyperchain由共识算法、权限管理、交易加密、区块存储、P2P通讯和智能合约执行引擎六个核心模块构成。如图2所示是面向企业的极速可编程区块链平台Hyperchain的整体逻辑架构图。从系统整体架构上看,Hyperchain平台主要的设计主要分为接口服务以及系统管控层、系统核心层、物理资源的动态管理层三个部分。

图2 Hyperchain系统架构图

8.1.3逻辑架构设计

在区块链系统中,我行有4个VP节点实现全联通,并且每个节点都连接一个Nginx,作为其双向代理,具备防火墙,并与外部节点相连。并且,在上地和酒仙桥分别部署一个POSP应用服务器

图3系统逻辑架构图

8.1.4部署方案设计

光大银行的四个区块链系统中的VP节点实现全联通,并分别与一台Nginx双向代理相连,这八台服务器分别具有一个自己的内网IP和一个端口号。并且在外部封装了web server服务器,配置相应的生产域名和出入口公网IP地址。通过公网地址,与区块链中的银联方面的节点进行信息传输。

8.1.5开发框架

本项目的开发框架如下图4所示:

系统使用levelDB作为底层数据库,作为一个非关系型数据库,它的高读写性能等特点非常合适区块链系统。

高性能共识算法RBFT是共识模块的关键实现,Hyperchain的共识模块算法以模块化方式实现,不同场景下可以选择相应的共识算法实现。

HPVM是高性能图灵完备的智能合约引擎的实现。节点管理器部分即P2P通讯模块提供了区块链节点发现和数据同步的功能,为区块链技术的去中心化特性提供了底层技术支持。

在数据库和加密算法的基础上构建一个Message Channel 接口服务器也称事件总线,是事件驱动方式的实现方式,其他相关组件例如共识、网络、执行等通过事件总线接口进行事件的交互。

节点管理器部分即P2P通讯模块提供了区块链节点发现和数据同步的功能,为区块链技术的去中心化特性提供了底层技术支持。

通过CA中心签发证书,根据不同证书类别,系统识别出参与节点的不同权限,根据不同权限来控制不同节点的准入和访问条件。

接口服务以及系统管控层,该层面通过HTTP Server接口的方式为用户应用程序接口的开发提供底层API,通过提供相应管理接口的方式提供系统的节点管理、合约管理、区块监控以及节点配置等功能。

图4 系统开发框架

8.1.6系统安全设计

在用户安全设计方面,Hyperchain区块链平台提供Namespace,同态加密,合约访问控制三种机制。通过CA认证授权实现联盟链准入机制。采用PKI体系结构采用证书管理公钥;系统权限设计方面,Hyperchain将节点分为两类节点:验证节点(VP),非验证节点(NVP);数据安全设计方面,采用多级加密安全机制,国密支持。

8.1.7接口设计

本项目使用的外部接口有JSON-RPC API以及Java SDK。Java SDK实质上调用了JSON-RPC API,并且提供了编码、解码、加密、解密以及交易签名等等方法。用户可以根据应用需求来选择使用不同类型的接口。

8.2实施过程

8.2.1电子签购单存储

8.2.1.1功能

1、收集顾客在门店POS机进行刷卡消费,并进行电子签名的电子凭证;

2、后台系统将电子凭证(包括凭证信息和电子签名图片)可以在数据表中存储(日终批量);

3、后台可以对存储的数据进行哈希加密;

4、区块链内所有节点能够对数据进行共识验证,再次加密;

5、将经过所有节点共识的数据会被存储在区块链中;

6、通过区块链达成共识的数据,可以保证一致性、完整性和安全性。可以保证数据的完全可信任,并且可对数据进行跨行的高效溯源查询。

8.2.1.2输入输出

  • 请求参数设计:

bytes32 key,bytes32 value //输入参数为该电子签购单私钥以及电子签购单信息

  • 响应参数设计:

bool,bytes32 //输出参数为一个共识是否达成的布尔值

表1 存证过程输出值反馈表

输出值

共识结果

true,"Success"

达成共识

false,"the key exist"

未达成共识

8.2.1.3处理流程

在电子签购单凭证存储方面的处理流程如下图5所示:

图5 存证业务处理逻辑图

8.2.1.4接口

此处接口设计主要指的是Hyperchain提供的JAVA-SDK接口部分的设计。JAVA-SDK主要对外提供本地调用接口,主要服务于JAVA用户,给JAVA用户提供一个非常便捷的调用接口,方便用户调用Hyperchain平台对外提供的服务。

JAVA-SDK需要完成的工作包括对交易信息的预处理,帮助用户实现私钥的管理交易的签名以及一些返回值的编码解码工作。这些工作本来都是非常复杂的,但是在JAVA-SDK支持之后,能够让本来较为复杂的事情简单化。

(1)交易相关接口

交易作为区块链上最为重要的数据接口,所有的交互都需要通过交易完成。

在本设计中,主要提供两个接口:

  • 交易查询接口

输入: 交易hash 或者交易索引。

输出:交易详情,包括交易的双方实体,交易内容等。

  • 交易回执查询接口

输入:交易hash或者交易索引。

输出:交易回执详情,包括交易执行信息,状态信息等。

(2)合约相关接口

作为快速可编程区块链平台,智能合约作为可编程的核心部件之一,对外需要提供如下接口:

  • 合约编译接口(可选)

输入:智能合约源代码

输出:智能合约字节码

  • 合约部署接口

输入:智能合约字节码

输出:部署交易hash

  • 合约执行接口

输入:智能合约调用字节码

输出:调用交易hash

(3)区块相关接口

区块相关接口主要提供了区块信息查询相关接口:

  • 区块数目查询

输入:无

输出:区块数目

  • 区块信息查询

输入:区块hash以及索引

输出:区块信息

(4)节点相关接口

节点本身的状态信息需要对外提供接口进行查询,该接口主要包括:

  • 节点信息查询

输入:无

输出:连接节点健康信息

8.2.1.5程序文件清单

新增:anchor.sol

8.2.1.6限制条件

8.2.1.7测试要点

在交易信息上链前的动态共识测试、节点是否全联通的测试。

8.2.2电子签购单查询

8.2.2.1功能

因为本行POS机刷卡可直接调用内部数据库进行查询,所以在此流程上只讨论当进行跨行刷卡时的跨行查询业务处理的功能需求。

1、用户向发卡行发起差错处理请求;

2、发卡行通过银联差错处理平台向收单行请求差错处理;

3、收单行接到请求后调取签购单并返回给差错处理平台;

4、差错处理平台通过可信凭证系统进行签购单校验;

5、校验成功,则将签购单返回发卡行;

6、不满足6中条件则拒绝此请求;

7、发卡行收到可信赖的签购单后反馈给用户;

8.2.2.2输入输出

  • 请求参数设计:

bytes32 key //输入参数为该电子签购单私钥

  • 响应参数设计:

bool,bytes32,bytes32 //输出参数为该笔业务是否成立,若成立则给出业务信息

表2查询过程输出值反馈表

输出值

共识结果

true,"Success",hashMap[key]

交易正确,返回交易信息

false,"the key is not exist",0x0

交易不正确,返回错误值

8.2.2.3处理流程

在电子签购单凭证查询方面的处理流程如下图所示:

图6 查询业务处理逻辑图

8.2.2.4接口

此处接口设计主要指的是Hyperchain提供的JAVA-SDK接口部分的设计。JAVA-SDK主要对外提供本地调用接口,主要服务于JAVA用户,给JAVA用户提供一个非常便捷的调用接口,方便用户调用Hyperchain平台对外提供的服务。JAVA-SDK需要完成的工作包括对交易信息的预处理,帮助用户实现私钥的管理交易的签名以及一些返回值的编码解码工作。这些工作本来都是非常复杂的,但是在JAVA-SDK支持之后,能够让本来较为复杂的事情简单化。

(1)交易相关接口

本部分主要介绍交易相关接口的设计,交易作为区块链上最为重要的数据接口,所有的交互都需要通过交易完成。

在本设计中,主要提供两个接口:

  • 交易查询接口

输入: 交易hash 或者交易索引。

输出:交易详情,包括交易的双方实体,交易内容等。

  • 交易回执查询接口

输入:交易hash或者交易索引。

输出:交易回执详情,包括交易执行信息,状态信息等。

(2)合约相关接口

作为快速可编程区块链平台,智能合约作为可编程的核心部件之一,对外需要提供如下接口:

  • 合约编译接口(可选)

输入:智能合约源代码

输出:智能合约字节码

  • 合约部署接口

输入:智能合约字节码

输出:部署交易hash

  • 合约执行接口

输入:智能合约调用字节码

输出:调用交易hash

(3)区块相关接口

区块相关接口主要提供了区块信息查询相关接口:

  • 区块数目查询

输入:无

输出:区块数目

  • 区块信息查询

输入:区块hash以及索引

输出:区块信息

(4)节点相关接口

节点本身的状态信息需要对外提供接口进行查询,该接口主要包括:

  • 节点信息查询

输入:无

输出:连接节点健康信息

8.2.2.5程序文件清单

新增:anchor.sol

8.2.2.6限制条件

8.2.2.7测试要点

错误值查询是否会报错,返回值的准确性。

9、商业变化

(1)实现电子凭证可信任化存储、可溯源化查找等功能;

(2)建立快速、高效、可信、可靠的POS机签购单存证数据库;

(3)对签购单进行管理,同时相对降低运维成本;

(4)本项目在金融领域实际应用区块链技术,为下一步业务做准备;

中国银联、光大银行基于区块链的可信电子凭证系统,在跨机构、跨区域、跨互联网、跨运营商的环境下,稳定投产上线运行,日交易量25万。后续会扩展到北京银行、银联商务、广发银行等银行接入。长远上来讲,业务参与各方的合法权益得到了真正的保证,为取消纸质凭证实现完全无纸化打下基础。

- 关于企业 -

杭州趣链科技有限公司的核心技术为自主可控的国产联盟链平台,并服务于数字票据、数据交易、股权债券、供应链金融、物流管理等众多领域。公司核心团队均毕业于浙江大学且具有博士学位,并由中国工程院陈纯院士担任董事长。

公司致力于研发具有颠覆性意义的区块链技术,具有非常领先的技术价值和应用价值;同时,公司建立了与浙江大学的战略合作关系,浙大的科研实力与人才优势将为公司提供源源不断的技术与脑力支持;而且,公司展开了广泛的技术与业务合作,已经和农业银行、浙商银行、上海证券交易所、中国银联、北京银行、光大银行、上海万达网络金融服务有限公司、广州广电运通、上海数据交易中心等众多公司与机构洽谈多项技术或项目合作(部分已经完成)。

2016年,公司获得由主板上市公司信雅达、浙大网新和君宝通信共计1750万人民币的Pre-A轮融资。2016年10月,公司发布全球首个成熟商用的联盟区块链平台Hyperchain。2016年12月,基于Hyperchain,国内首个银行核心系统区块链项目即浙商银行移动汇票正式上线。2017年3月,公司核心产品Hyperchain在众多金融和非金融机构的内部测试中,与国内外所有产品相比均排名第一(测试范围覆盖功能、性能、稳定性、可用性、易用性、成熟度等)。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2017-10-12,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据猿 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
Python学习(3):理解计算机中编码三、认识常见的计算机编码
我们学习Python编程,经常对字符串这样的数据进行处理。我们也都知道计算机内部信息是采用二进制编码的,那么这其中的处理原理是什么呢?本篇就计算机中关于编码的知识进行总结。 一、为什么计算机内部信息采用二进制编码 计算机是由逻辑电路组成的,而逻辑电路只有接通与断开两个状态,正好可以对映二进制的“1”与“0”。这样的计算机设计在技术上会简单许多。 二、计算机编码的由来 计算机内部信息采用二进制编码,这决定了它只能直接识别0和1。我们所有各类型数据也都需要被转换为二进制0和1的序列存放在计算机中的。但是这样就产
梧雨北辰
2018/06/07
8140
计算机编码基础
Single
2018/01/04
9960
计算机编码基础
你所不了解的字符编码
前言 在我的工作中,常常会遇到形形色色的字符编码,对于各种编码技术本人了解的也不是很多。 本篇是我了解编码系列的开篇,主要内容讲述字符编码的基本概念,然后介绍一下常见的字符编码,最后说明一下 Java
BUG弄潮儿
2021/06/25
1.2K0
你所不了解的字符编码
各种编码
常见的和编码相关的几个关键词: ASCII Unicode UTF-6,UTF-16,UTF-32 GBK ISO 下面开始一个一个的解释: ASCII码 计算机中所有的信息都是以二进制的形式存在的. 早先美国人发明了计算机,为了用计算机表示他们美国人可以看懂的信息,就将26个英文字母以及一些常用字符用二进制代码表示. 二进制代码和对应的英语字符的关系被规定为ASCII码. ASCII码一共规定了128个字符的编码. 这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位
青木
2018/05/28
7300
字符编码的前世今生——一文读懂字符编码
话说六年级二班有小明、小红两位同学,最近班上开了英语课,学着学着有些无聊,这时候小明想给小红传纸条,但是又担心被发现,突然小明灵机一动,在草纸上写下了一串数字12 9 11 5 21,然后就传给了小红,小红看了一眼莫名其妙,这时候小明冲着小红指了指自己英语书后面的字母表,小红看了几眼字母表,顿时明白过来,原来字母表上面有编号,小红按照编号,将这一串数字转换出来,得到的是like u,羞得小红脸色发红,这可真成了“小红”……
arcticfox
2019/06/26
2.4K0
字符编码的前世今生——一文读懂字符编码
文字与编码的奥秘(下)
在上篇文章中我们已经了解到,计算机内部是采用的二进制进行运算和存储的。通过计算机来代替我们进行日常的工作,必然会遇到如何进行运算以及数据如何进行存储的问题,本篇文章我将和大家一起来了解下文字是如何在计算机中存储的。
老钱
2019/10/25
1.5K1
文字与编码的奥秘(下)
关于字符编码的那些事
一、编码是什么 编码为了某种目的把信息从一种形式集合转换为另一种形式集合的过程,古时的鸣金收兵,从某种意义上讲也是一种编码,将帅发出了退兵的命令,为了让更多的人能够知道这个命令,传令兵把这个信息转换为了锣声,传递了出去 与编码相对的还有解码,解码是根据某种规则将信息恢复到原状的过程,士兵之前都接收过训练,在听到锣声之后,明白到锣声代表退兵,便开始执行这一命令。 旗语,电报中的莫斯电码等等,这些东西里面也包含了编码 二、关于字符集和字符编码 因为计算机中的信息都是用二进制数表示的,所以我们必须将汉字、英文按照
magicsoar
2018/02/06
1.1K0
关于字符编码的那些事
架构师必须掌握的各种编码:ASCII、ISO-8859-1、GB2312...
编码在我们日常开发过程中经常有遇到,常见的编码格式有ASCII、ISO-8859-1、GB2312、GBK、GB18030、UNICODE、UTF-8、UTF-16等,其中GB2312、GBK、GB18030、UTF-8、UTF-16都可以用来表示中文,那么哪种存储中文会比较合适呢,下面会对这几种编码一一介绍便会有结论。 为什么有编码 我们知道计算机中最小的存储单位是字节(byte),一个字节所能表示的字符数又有限,1byte=8bit,一个字节最多也只能表示255个字符,而世界上的语种又多,都有各种不
Java技术栈
2018/03/30
2.3K0
JDK1.9-转换流
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/12/10
6190
JDK1.9-转换流
计算机程序的思维逻辑 (6) - 如何从乱码中恢复 (上)?
我们在处理文件、浏览网页、编写程序时,时不时会碰到乱码的情况。乱码几乎总是令人心烦,让人困惑。希望通过本节和下节文章,你可以自信从容地面对乱码,恢复乱码。 谈乱码,我们就要谈数据的二进制表示,我们已经在前两节谈过整数和小数的二进制表示,接下了我们将讨论字符和文本的二进制表示。 由于内容比较多,我们将分两节来介绍。本节主要介绍各种编码,乱码产生的原因,以及简单乱码的恢复。下节我们介绍复杂乱码的恢复,以及Java中对字符和文本的处理。 编码和乱码听起来比较复杂,文章也比较长,但其实并不复杂,请耐心阅读,让我们
swiftma
2018/01/31
1.5K0
计算机程序的思维逻辑 (6) - 如何从乱码中恢复 (上)?
字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码
字符是人们常用的一些记号,比如”1”, “汉”, “お”,”℃”等等,包括各种语系的语言和一些符号都可以被称为字符。 字节是计算机存储数据的存储单元,是一个8位的二进制数,所以最多只能表示256个数字(0-255)。 编码是大家对计算机如何使用字节来表示一个字符的约定,可分为ASCII编码,ANSI编码(本地化编码),UNICODE编码(国际化编码)三种。
学到老
2019/02/14
4.8K0
字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码
字符是人们常用的一些记号,比如”1”, “汉”, “お”,”℃”等等,包括各种语系的语言和一些符号都可以被称为字符。 字节是计算机存储数据的存储单元,是一个8位的二进制数,所以最多只能表示256个数字(0-255)。 编码是大家对计算机如何使用字节来表示一个字符的约定,可分为ASCII编码,ANSI编码(本地化编码),UNICODE编码(国际化编码)三种。 1.ASCII编码:单字节编码。 最初的编码,由一个字节组成,因此只能表示256个字符,但只表示0-9,a-z,A-Z,和一些加减乘除百分号,够老美用了
学到老
2018/03/19
3.9K0
字节码:ASCII编码:单字节编码,ANSI编码:多字节编码,UNICODE编码:宽字节编码
理解字符编码:从ASCII到UTF-8及Base64
编码是一种将字符集映射到字节序列的方法。在计算机中,所有数据都以二进制形式存储和处理,因此我们需要一种方法来表示文本字符。这就是编码的作用。
陆业聪
2024/07/23
4700
理解字符编码:从ASCII到UTF-8及Base64
编码总结笔记 原
我们知道,在计算机内部,所有的信息最终都表示为一个二进制的字符串。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从0000000到11111111。
wuweixiang
2018/08/14
7760
编码总结笔记
                                                                            原
字符编码
原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 、作者信息和本声明。否则将追究法律责任。http://polaris.blog.51cto.com/1146394/377468
拾点阳光
2018/09/28
2.4K0
MySQL字符编码指南--基础篇
要了解MySQL的字符编码,解决乱码问题,必须先了解字符编码。我们知道所谓信息,在计算机中不过是一串的位(bit:0 or 1),每8个bit组成了一个字节,而这些字节到底表示什么,取决于读到这些对象的上下文,1个字节序列,可以表示整数,字符串或者机器指令,当然也可以表示中文,日文,甚至上古文字。
DBA成江东
2023/07/15
1.1K0
MySQL字符编码指南--基础篇
【字符编码那些事】ASCII、GB2312、GBK、UTF-8编码以及Unicode字符集
我们在开发中是不是经常会遇到这样的问题,比如你在VS2019中创建了一个工程,里面有C语言程序和中文注释,有一天,根据工作需要,你要把其中的一部分C文件和H文件移植到Keil工程中,当你通过复制黏贴把相应文件移植到Keil工程中,并使用MDK打开时,却发现,你移植的文件C语言程序是正常显示的,但是中文却成了一堆乱码,并且一编译各种莫名其妙的报错。这其实就有可能是你的VS2019和Keil使用了不同的编码方式,因为大部分编码兼容ASCII编码,而C语言程序是英文字符,采用了ASCII编码,所以正常显示,而中文编码就不同了,比如内存中同样的0xB0A1,使用不同编码标准去对0xB0A1解码,得到的可能就是不同的汉字。
mindtechnist
2024/08/08
2.8K0
【字符编码那些事】ASCII、GB2312、GBK、UTF-8编码以及Unicode字符集
万字长文讲解编码知识,看这文就够了!
字符指类字形单位或符号,包括字母、数字、运算符号、标点符号和其他符号,以及一些功能性符号。一般来说我们称某个字符集里面的字符,叫xx字符,如ASCII字符集里面的ASCII字符,GB2312字符集里面的GB2312字符。
杰哥的IT之旅
2020/06/18
3.3K0
万字长文讲解编码知识,看这文就够了!
计算机字符编码的前世今生
有人丢给你下面这张图,如果你能清楚地说明它们之间的关系以及用途,那么你对字符编码的理解肯定过关了。
冬夜先生
2021/10/12
4760
彻底摆脱乱码的困惑
先给大家出个思考题吧,一个汉字占多少字节?是不是网上搜出的答案五花八门,那么读完本篇文章,我希望你至少可以准确知道这个问题的答案,我觉得就算是收获。
帅地
2020/12/11
1.4K0
彻底摆脱乱码的困惑
相关推荐
Python学习(3):理解计算机中编码三、认识常见的计算机编码
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档