GBK、UTF-8、ASCLL、url编码
GBK
GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification)。GBK 向下与 GB 2312 编码兼容,向上支持ISO 10646国际标准,是前者向后者过渡过程中的一个承上启下的产物。GBK编码,是在GB2312-80标准基础上的内码扩展规范,使用了双字节编码方案,其编码范围从8140至FEFE(剔除xx7F),共23940个码位,共收录了21003个汉字,完全兼容GB2312-80标准,支持国际标准ISO/IEC10646-1和国家标准GB13000-1中的全部中日韩汉字,并包含了BIG5编码中的所有汉字。
代码与缩写
原gb2312 HTML编码标签代码如下:
1.gbk简写截图:
2.缩写兼容性:所有浏览器均兼容,无论新旧版本IE还是不同品牌浏览器均兼容。至于GBK编码简写时候编码填写为gb2312还是填写为gbk,DIV CSS认为没有什么区别,均可。为了符合大家都使用gbk字符编码,大家可以写为“gb2312”。
知识链接
编码,是指以固定的顺序排列字符,并以此做为记录、存贮、传递、交换的统一内部特征,这个字符排列顺序被称为“编码”。和中文字库有关的编码标准有:国标GB码、GBK码、港台BIG-5码等,不同编码的汉字字库都与汉字的应用有密切关系。
相关概念
编码方式
经实际测试和查阅文档,GBK是采用单双字节变长编码,英文使用单字节编码,完全兼容ASCII字符编码,中文部分采用双字节编码。
字汇
GBK 规范收录了 ISO 10646.1 中的全部 CJK 汉字和符号,并有所补充。具体包括:
- GB 2312 中的全部汉字、非汉字符号。
- GB 13000.1-1993 中的其他 CJK 汉字。以上合计 20902 个 GB 化汉字。
- 《简化字总表》中未收入 GB 13000.1 的 52 个汉字。
- 《康熙字典》及《辞海》中未收入 GB 13000.1 的 28 个部首及重要构件。
- 13 个汉字结构符。
- BIG-5 中未被 GB 2312 收入、但存在于 GB 13000.1 中的 139 个图形符号。
- GB 12345 增补的 6 个拼音符号。
- 汉字“○”。
- GB 12345 增补的 19 个竖排标点符号(GB 12345 较 GB 2312 增补竖排标点符号 29 个,其中 10 个未被 GB 13000.1 收入,故 GBK 亦不收)。
- 从 GB 13000.1 的 CJK 兼容区挑选出的 21 个汉字。
- GB 13000.1 收入的 31 个 IBM OS/2 专用符号。
- 未录入《新华字典》上的一些字,如“韡”的简体。
分配及顺序
GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线。总计 23940 个码位,共收入 21886 个汉字和图形符号,其中汉字(包括部首和构件)21003 个,图形符号 883 个。
全部编码分为三大部分:
1.汉字区。包括:
a. GB 2312 汉字区。即 GBK/2: B0A1-F7FE。收录 GB 2312 汉字 6763 个,按原顺序排列。
b. GB 13000.1 扩充汉字区。包括:
(1) GBK/3: 8140-A0FE。收录 GB 13000.1 中的 CJK 汉字 6080 个。
(2) GBK/4: AA40-FEA0。收录 CJK 汉字和增补的汉字 8160 个。CJK 汉字在前,按 UCS 代码大小排列;增补的汉字(包括部首和构件)在后,按《康熙字典》的页码/字位排列。
2.图形符号区。包括:
a. GB 2312 非汉字符号区。即 GBK/1: A1A1-A9FE。其中除 GB 2312 的符号外,还有 10 个小写罗马数字和 GB 12345 增补的符号。计符号 717 个。
b. GB 13000.1 扩充非汉字区。即 GBK/5: A840-A9A0。BIG-5 非汉字符号、结构符和“○”排列在此区。计符号 166 个。
3.用户自定义区:分为(1)(2)(3)三个小区。
(1) AAA1-AFFE,码位 564 个。
(2) F8A1-FEFE,码位 658 个。
(3) A140-A7A0,码位 672 个。
第(3)区尽管对用户开放,但限制使用,因为不排除未来在此区域增补新字符的可能性。
字形
GBK 对字形作了如下的规定:
1. 原则上与 GB 13000.1 G列(即源自中国大陆法定标准的汉字)下的字形/笔形保持一致。
2. 在 CJK 汉字认同规则的总框架内,对所有的 GBK 编码汉字实施“无重码正形”(“GB 化”);即在不造成重码的前提下,尽量采用中国新字形。
3. 对于超出 CJK 汉字认同规则的、或认同规则尚未明确规定的汉字,在 GBK 码位上暂安放旧字形。这样,在许多情况下 GBK 收入了同一汉字的新旧两种字形。
4. 非汉字符号的字形,凡 GB 2312 已经包括的,与 GB 2312 保持一致;超出 GB 2312 的部分,与 GB 13000.1 保持一致。
5. 带声调的拼音字母取半角形式。
UTF-8
UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍与ASCII相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
基本特征
UCS字符U+0000到U+007F(ASCII)被编码为字节0×00到0x7F(ASCIⅡ兼容)。这意味着只包含7位ASCIl字符的文件在ASCIⅡ和UTF-8两种编码方式下是一样的。
UTF-8编码字符理论上可以最多到4个字节长,然而16位BMP字符最多只用到3字节长,Bigendian UCS-4字节串的排列顺序是预定的,字节0xFE和OxFF在UTF-8编码中从未用到。
编码字节数
UTF-8使用1~4字节为每个字符编码:
- 一个US-ASCIl字符只需1字节编码(Unicode范围由U+0000~U+007F)。
- 带有变音符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文等字母则需要2字节编码(Unicode范围由U+0080~U+07FF)。
- 其他语言的字符(包括中日韩文字、东南亚文字、中东文字等)包含了大部分常用字,使用3字节编码。
- 其他极少使用的语言字符使用4字节编码。
字符集
UTF-8编码规则:如果只有一个字节则取值为\x00-\x7F。其余字节按长度进行以下拓展:
UTF-8由4种编码方式实现,即UTF8-1 / UTF8-2 / UTF8-3 / UTF8-4。其中:
UTF8, 16进制编码表
UTF8-1 | \x00-\x7F |
UTF8-2 | \xC2-\xDF \x80-\xBF |
UTF8-3 |
\xE0 \xA0-\xBF \x80-\xBF \xE1-\xEC \x80-\xBF \x80-\xBF \xED \x80-\x9F \x80-\xBF \xEE-\xEF \x80-\xBF \x80-\xBF |
UTF8-4 |
\xF0 \x90-\xBF \x80-\xBF \x80-\xBF \xF1-\xF3 \x80-\xBF \x80-\xBF \x80-\xBF \xF4 \x80-\x8F \x80-\xBF \x80-\xBF |
注:每种编码可能有多个编码范围,每个编码范围间,以空格作为每个字节的分隔符。例如UTF8-3的第一个编码,其第一个字节取值必须为\xE0,第二个字节范围为\xA0-\xBF,第三个字节为\x80-\xBF。
优缺点
优点
UTF-8编码可以通过屏蔽位和移位操作快速读写。字符串比较时strcmp()和wcscmp()的返回结果相同,因此使排序变得更加容易。字节FF和FE在UTF-8编码中永远不会出现,因此他们可以用来表明UTF-16或UTF-32文本(见BOM) UTF-8 是字节顺序无关的。它的字节顺序在所有系统中都是一样的,因此它实际上并不需要BOM。
缺点
你无法从UNICODE字符数判断出UTF-8文本的字节数,因为UTF-8是一种变长编码它需要用2个字节编码那些用扩展ASCII字符集只需1个字节的字符 ISO Latin-1 是UNICODE的子集,但不是UTF-8的子集 8位字符的UTF-8编码会被email网关过滤,因为internet信息最初设计为7位ASCII码。因此产生了UTF-7编码。 UTF-8 在它的表示中使用值100xxxxx的几率超过50%, 而现存的实现如ISO 2022, 4873, 6429, 和8859系统,会把它错认为是C1 控制码。因此产生了UTF-7.5编码。
词条图册
ASCLL
ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。
表达方式
- ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 [1] 。其中:
- 0~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响 [1] 。
- 32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。
- 65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。
大小规则
- 数字比字母要小。如 “7”<“F”;
- 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
- 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
- 同个字母的大写字母比小写字母要小32。如“A”<“a” 。
几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。
ASCII 字符集
- ASCII ,它的全称是"美国信息交换标准代码"。它设计于60年代早期,是计算机和诸如打印机、磁带驱动器之类的硬件设备的标准字符集。
- ASCII 是 7 比特字符集,包含了 128 个不同的字符值。
- ASCII 支持 0-9 的数字,A-Z大写和小写英文字母,以及一些特殊字符。
- 被广泛使用于现代计算机、HTML和因特网上的字符集都是基于 ASCII 。
- 以下表格列举了128个 ASCII 字符以及对应的 HTML 实体编码。
URL编码
theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes
防止sql注入
URL - 统一资源定位器
URL 是网页的地址,比如: https://www.runoob.com。
URL 编码
- URL 只能使用 ASCII 字符集来通过因特网进行发送。
- 由于 URL 常常会包含 ASCII 集合之外的字符,URL 必须转换为有效的 ASCII 格式。
- URL 编码使用 "%" 其后跟随两位的十六进制数来替换非 ASCII 字符。
- URL 不能包含空格。URL 编码通常使用 + 来替换空格。
使用举例
编码问题是JAVA初学者在web开发过程中经常会遇到问题,其中之一是URL中使用中文等非ASCII的字符造成服务器后台程序解析出现乱码的问题。
- HttpServletRequest.setCharacterEncoding()方法 仅仅只适用于设置post提交的requestboda的编码而不是设置get方法提交的queryString的编码。该方法告诉应用服务器应该采用什么编码解析post传过来的内容。
- HttpServletRequest.getPathInfo()返回的结果是由Servlet服务器解码(decode)过的。
- HttpServletRequest.getRequestURI()返回的字符串没有被Servlet服务器decoded过。
- POST提交的数据是作为request body的一部分。
网页的Http头中ContentType("text/html; charset=GBK")的作用:
注意:这里所说的ContentType是指http头的ContentType,而不是在网页中mete中的ContentType。
GBK、UTF-8、ASCLL、url编码相关推荐
- GBK UTF-8 ASCLL URL编码
GBK编码 码位分配及顺序 GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线.总计 23940 个码位,共收 ...
- Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码
将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...
- python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子
因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...
- python3默认编码_python3的url编码和解码,自定义gbk、utf-8的例子
因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...
- python 解码gbk_Python3的url编码和解码,自定义gbk、utf-8的例子
今天小编就为大家分享一篇python3的url编码和解码,自定义gbk.utf-8的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 因为很多时候要涉及到url的编码和解码工作,所 ...
- python解码gbk_Python的url编码问题(ansi,utf8,gbk) | C/C++程序员之家
Python的url编码问题(ansi,utf8,gbk). urllib包提供了对url的编码和解码,示例如下: >>> import urllib >>> da ...
- URL编码及其其他编码问题
目录 URL编码 ASCII与拓展的ASCII 显然,有些ASCII可打印字符必须编码才能传输 抓包查看URL编码后的数据 unicode编码.utf-8编码.UCS.UTF ANSI.gb系列.Bi ...
- URL编码以及GET和POST提交乱码解决方案
2019独角兽企业重金招聘Python工程师标准>>> 1. 什么是URL编码. URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value ...
- java中http解析url,java url 编码(解析http请求汉语言地址 )
java url 编码(解析http请求中文地址 ) 在近在做项目的过程中,由于客户那边服务器上提供的有很多中文结构目录.请求要的地址不能正常运行显示出来.下面来分享一下我对http协议处理请求中文的 ...
- url编码混乱下下载工具如何应对
近来实现了一个Http file server,发现不同浏览器下载文件时url采用的编码是不同的. -------------------------------------------------- ...
最新文章
- spark2读取oracle工具类,spark读写Oracle、hive的艰辛之路(一)
- 创建 Monitor 并测试 - 每天5分钟玩转 OpenStack(124)
- 第8章 基本UDP套接口编程
- 邻域闭包matlab,闭包 - it610.com
- php ahp和jhp,php7.4编译(centos)
- CentOS 7.6 安装 Mysql8.0.17 rpm-bundle.tar解包 rpm安装(个人未验证)
- Leetcode按Tag刷题
- Jmeter系列之数据库操作
- python 数据流中的移动平均值_Python实现数据流中的中位数【堆】
- Ubuntu系统安装JDK教程
- 极速办公(PPT)字体如何设置斜体
- 清除此计算机中wps云盘,教大家Win10系统删除WPS网盘的方法,爱纯净官网
- 2022珠三角深圳锂电池技术展览会暨论坛|2022华南广东深圳锂电池技术展览会
- 使用Subline Text对比查找两个文档的不同
- 美国国父乔治华盛顿首任就职演说
- go.php跳转外部浏览器,Go调用浏览访问url链接
- 简单说一下阿里云到底是干什么的?
- 糗事百科成人版段子爬虫实战
- 税务总局:今年预计减税1.8万亿元!个体户能享受哪些税收优惠?
- (附源码)计算机毕业设计SSM驾考服务系统
热门文章
- 【pytorch目标检测】FPN网络结构
- linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
- k3c最新官改非常稳定了_2020国庆过后玉米价格最新行情走势
- SPSS基础教程—怎样对数据进行综合评价排名
- php商品详情页页面代码,商品详情页是怎么生成的?
- 新商用密码产品认证梳理——标准和材料对比
- 在virtualbox安装xp系统及安装oracle
- Quartz——CronTrigger触发器
- lcd1602c语言编程,C51单片机LCD1602编程经验分享
- 【趣闻】清华大学大一的英文原版线性代数教材里居然出现了Python