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 汉字和符号,并有所补充。具体包括:

  1. GB 2312 中的全部汉字、非汉字符号。
  2. GB 13000.1-1993 中的其他 CJK 汉字。以上合计 20902 个 GB 化汉字。
  3. 《简化字总表》中未收入 GB 13000.1 的 52 个汉字。
  4. 《康熙字典》及《辞海》中未收入 GB 13000.1 的 28 个部首及重要构件。
  5. 13 个汉字结构符。
  6. BIG-5 中未被 GB 2312 收入、但存在于 GB 13000.1 中的 139 个图形符号。
  7. GB 12345 增补的 6 个拼音符号。
  8. 汉字“○”。
  9. GB 12345 增补的 19 个竖排标点符号(GB 12345 较 GB 2312 增补竖排标点符号 29 个,其中 10 个未被 GB 13000.1 收入,故 GBK 亦不收)。
  10. 从 GB 13000.1 的 CJK 兼容区挑选出的 21 个汉字。
  11. GB 13000.1 收入的 31 个 IBM OS/2 专用符号。
  12. 未录入《新华字典》上的一些字,如“韡”的简体。

分配及顺序

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码的大小规则:0~9<A~Z<a~z。

  1. 数字比字母要小。如 “7”<“F”;
  2. 数字0比数字9要小,并按0到9顺序递增。如 “3”<“8” ;
  3. 字母A比字母Z要小,并按A到Z顺序递增。如“A”<“Z” ;
  4. 同个字母的大写字母比小写字母要小32。如“A”<“a” 。

几个常见字母的ASCII码大小: “A”为65;“a”为97;“0”为 48 。

ASCII 字符集

URL编码

url编码是一种浏览器用来打包表单输入的格式。浏览器从表单中获取所有的name和其中的值 ,将它们以name/value参数编码(移去那些不能传送的字符,将数据排行等等)作为URL的一部分或者分离地发给服务器。不管哪种情况,在服务器端的表单输入格式样子象这样:

theName=Ichabod+Crane&gender=male&status=missing& ;headless=yes

防止sql注入

URL编码平时是用不到的,因为IE会自动将输入到地址栏的非数字字母转换为url编码。曾有人提出数据库名字里带上“#”以防止被下载,因为IE遇到#就会忽略后面的字母。破解方法很简单——用url编码%23替换掉#。现在SQL注射非常流行,所以就有人写了一些防注射的脚本。下面××SQL通用防注入asp版部分代码。

URL - 统一资源定位器

Web 浏览器通过 URL 从 web 服务器请求页面。

URL 是网页的地址,比如: https://www.runoob.com

URL 编码

使用举例

前言

编码问题是JAVA初学者在web开发过程中经常会遇到问题,其中之一是URL中使用中文等非ASCII的字符造成服务器后台程序解析出现乱码的问题。

常见出错部分

也就是容易出现中文字符的部分:

  1. Query String中的参数值
  2. servlet path

常见出错原因

  1. 浏览器:我们的客户端(浏览器)本身并没有遵循URI编码的规范。
  2. Servlet服务器:Servlet服务器的没有正确配置。
  3. 开发人员并不了解Servlet的规范和API的含义。

servlet规范

  1. HttpServletRequest.setCharacterEncoding()方法 仅仅只适用于设置post提交的requestboda的编码而不是设置get方法提交的queryString的编码。该方法告诉应用服务器应该采用什么编码解析post传过来的内容。
  2. HttpServletRequest.getPathInfo()返回的结果是由Servlet服务器解码(decode)过的。
  3. HttpServletRequest.getRequestURI()返回的字符串没有被Servlet服务器decoded过。
  4. POST提交的数据是作为request body的一部分。

网页的Http头中ContentType("text/html; charset=GBK")的作用:

注意:这里所说的ContentType是指http头的ContentType,而不是在网页中mete中的ContentType。

GBK、UTF-8、ASCLL、url编码相关推荐

  1. GBK UTF-8 ASCLL URL编码

    GBK编码 码位分配及顺序 GBK 亦采用双字节表示,总体编码范围为 8140-FEFE,首字节在 81-FE 之间,尾字节在 40-FE 之间,剔除 xx7F 一条线.总计 23940 个码位,共收 ...

  2. Unicode、UTF 和 ISO-8859-1等编码方式详解与浏览器URL编码

    将字符转换为二进制码的过程,我们称为编码,将二进制码转换为字符的过程,我们称为解码. 编码和解码时所采用的规则,我们称为字符集 常见的字符集: ASCII - 美国人编码,使用7位来对美国常用的字符进 ...

  3. python3编码和解码_python3的url编码和解码,自定义gbk、utf-8的例子

    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...

  4. python3默认编码_python3的url编码和解码,自定义gbk、utf-8的例子

    因为很多时候要涉及到url的编码和解码工作,所以自己制作了一个类,废话不多说 码上见! # coding:utf-8 import urllib.parse class Urlchuli(): &qu ...

  5. python 解码gbk_Python3的url编码和解码,自定义gbk、utf-8的例子

    今天小编就为大家分享一篇python3的url编码和解码,自定义gbk.utf-8的例子,具有很好的参考价值,希望对大家有所帮助.一起跟随小编过来看看吧 因为很多时候要涉及到url的编码和解码工作,所 ...

  6. python解码gbk_Python的url编码问题(ansi,utf8,gbk) | C/C++程序员之家

    Python的url编码问题(ansi,utf8,gbk). urllib包提供了对url的编码和解码,示例如下: >>> import urllib >>> da ...

  7. URL编码及其其他编码问题

    目录 URL编码 ASCII与拓展的ASCII 显然,有些ASCII可打印字符必须编码才能传输 抓包查看URL编码后的数据 unicode编码.utf-8编码.UCS.UTF ANSI.gb系列.Bi ...

  8. URL编码以及GET和POST提交乱码解决方案

    2019独角兽企业重金招聘Python工程师标准>>> 1.  什么是URL编码. URL编码是一种浏览器用来打包表单输入的格式,浏览器从表单中获取所有的name和其对应的value ...

  9. java中http解析url,java url 编码(解析http请求汉语言地址 )

    java url 编码(解析http请求中文地址 ) 在近在做项目的过程中,由于客户那边服务器上提供的有很多中文结构目录.请求要的地址不能正常运行显示出来.下面来分享一下我对http协议处理请求中文的 ...

  10. url编码混乱下下载工具如何应对

    近来实现了一个Http file server,发现不同浏览器下载文件时url采用的编码是不同的. -------------------------------------------------- ...

最新文章

  1. spark2读取oracle工具类,spark读写Oracle、hive的艰辛之路(一)
  2. 创建 Monitor 并测试 - 每天5分钟玩转 OpenStack(124)
  3. 第8章 基本UDP套接口编程
  4. 邻域闭包matlab,闭包 - it610.com
  5. php ahp和jhp,php7.4编译(centos)
  6. CentOS 7.6 安装 Mysql8.0.17 rpm-bundle.tar解包 rpm安装(个人未验证)
  7. Leetcode按Tag刷题
  8. Jmeter系列之数据库操作
  9. python 数据流中的移动平均值_Python实现数据流中的中位数【堆】
  10. Ubuntu系统安装JDK教程
  11. 极速办公(PPT)字体如何设置斜体
  12. 清除此计算机中wps云盘,教大家Win10系统删除WPS网盘的方法,爱纯净官网
  13. 2022珠三角深圳锂电池技术展览会暨论坛|2022华南广东深圳锂电池技术展览会
  14. 使用Subline Text对比查找两个文档的不同
  15. 美国国父乔治华盛顿首任就职演说
  16. go.php跳转外部浏览器,Go调用浏览访问url链接
  17. 简单说一下阿里云到底是干什么的?
  18. 糗事百科成人版段子爬虫实战
  19. 税务总局:今年预计减税1.8万亿元!个体户能享受哪些税收优惠?
  20. (附源码)计算机毕业设计SSM驾考服务系统

热门文章

  1. 【pytorch目标检测】FPN网络结构
  2. linux安装完windows字体以后 特别难看,告别 Windows 终端的难看难用,从改造 PowerShell 的外观开始...
  3. k3c最新官改非常稳定了_2020国庆过后玉米价格最新行情走势
  4. SPSS基础教程—怎样对数据进行综合评价排名
  5. php商品详情页页面代码,商品详情页是怎么生成的?
  6. 新商用密码产品认证梳理——标准和材料对比
  7. 在virtualbox安装xp系统及安装oracle
  8. Quartz——CronTrigger触发器
  9. lcd1602c语言编程,C51单片机LCD1602编程经验分享
  10. 【趣闻】清华大学大一的英文原版线性代数教材里居然出现了Python