ASCLL GBK UTF-8 http https

本文介绍了ASCII、GBK、UTF-8编码标准,以及HTTP和HTTPS协议的工作原理。ASCII是7位或8位二进制表示128个字符的标准编码。GBK是扩展的汉字编码,UTF-8是一种变长字符编码,能表示Unicode标准中的所有字符。HTTP是基于请求-响应的协议,HTTPS在HTTP基础上增加了SSL/TLS层,确保数据传输的安全性。

ASCLL

    ASCII ((American Standard Code for InfoUTF-8rmation Interchange): 美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言。它是最通用的信息交换标准,并等同于国际标准ISO/IEC 646。ASCII第一次以规范标准的类型发表是在1967年,最后一次更新则是在1986年,到目前为止共定义了128个字符。
  ASCII 码使用指定的7 位或8 位二进制数组合来表示128 或256 种可能的字符。标准ASCII 码也叫基础ASCII码,使用7 位二进制数(剩下的1位二进制为0)来表示所有的大写和小写字母,数字0 到9、标点符号,以及在美式英语中使用的特殊控制字符 。其中: 0  ~31及127(共33个)是控制字符或通信专用字符(其余为可显示字符),如控制符:LF(换行)、CR(回车)、FF(换页)、DEL(删除)、BS(退格)、BEL(响铃)等;通信专用字符:SOH(文头)、EOT(文尾)、ACK(确认)等;ASCII值为8、9、10 和13 分别转换为退格、制表、换行和回车字符。它们并没有特定的图形显示,但会依不同的应用程序,而对文本显示有不同的影响。 32~126(共95个)是字符(32是空格),其中48~57为0到9十个阿拉伯数字。65~90为26个大写英文字母,97~122号为26个小写英文字母,其余为一些标点符号、运算符号等。同时还要注意,在标准ASCII中,其最高位(b7)用作奇偶校验位。所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1;偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1 。后128个称为扩展ASCII码。许多基于x86的系统都支持使用扩展(或“高”)ASCII。扩展ASCII 码允许将每个字符的第8 位用于确定附加的128 个特殊符号字符、外来语字母和图形符号。

GBK


GBK全称《汉字内码扩展规范》(GBK即“国标”、“扩展”汉语拼音的第一个字母,英文名称:Chinese Internal Code Specification) ,中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司、电子工业部科技与质量监督司1995年12月15日联合以技监标函1995 229号文件的形式,将它确定为技术规范指导性文件。2000年已被GB18030-2000《信息交换用 汉字编码字符集 基本集的扩充》国家强制标准替代。 [2]
2005年GB18030-2005发布,替代了GB18030-2000。
1、原gb2312 HTML编码标签代码如下:
2、可以缩写为或
4、缩写兼容性:所有浏览器均兼容,无论新旧版本IE还是不同品牌浏览器均兼容。至于GBK编码简写时候编码填写为gb2312还是填写为gbk,DIV CSS认为没有什么区别,均可。为了符合大家都使用gbk字符编码,大家可以写为“gb2312”。

UTF-8


UTF-8(8位元,Universal Character Set/Unicode Transformation Format)是针对Unicode的一种可变长度字符编码。它可以用来表示Unicode标准中的任何字符,而且其编码中的第一个字节仍
相容,使得原来处理ASCII字符的软件无须或只进行少部分修改后,便可继续使用。因此,它逐渐成为电子邮件、网页及其他存储或传送文字的应用中,优先采用的编码。
UCS字符U+0000到U+007F(ASCII)被编码为字节0×00到0x7F(ASCIⅡ兼容)。这意味着只包含7位ASCIl字符的文件在ASCIⅡ和UTF-8两种编码方式下是一样的。
所有大于0x007F的UCS字符被编码为一个有多个字节的串,每个字节都有标记位集。因此,ASCIl字节(0x00-0x7F)不可能作为任何其他字符的一部分。表示非ASCIl字符的多字节串的第一个字节总是在0xC0到0XFD的范围里,并指出这个字符包含多少个字节。多字节串的其余字节都在0x80到0xBF范围里。这使得重新同步非常容易,并使编码无国界,且很少受丢失字节的影响。
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字节编码。

http

超文本传输协议(Hyper Text Transfer Protocol,HTTP)是一个简单的请求-响应协议,它通常运行在TCP之上。它指定了客户端可能发送给服务器什么样的消息以及得到什么样的响应。请求和响应消息的头以ASCII形式给出;而消息内容则具有一个类似MIME的格式。这个简单模型是早期Web成功的有功之臣,因为它使开发和部署非常地直截了当。
HTTP是基于请求/响应范式的。一个客户机与服务器建立连接后,发送一个请求给服务器,请求方式的格式为,统一资源标识符、协议版本号,后边是MIME信息包括请求修饰符、客户机信息和可能的内容。服务器接到请求后,给予相应的响应信息,其格式为一个状态行包括信息的协议版本号、一个成功或错误的代码,后边是MIME信息包括服务器信息、实体信息和可能的内容。其实简单说就是任何服务器除了包括HTML文件以外,还有一个HTTP驻留程序,用于响应用户请求。你的浏览器是HTTP客户,向服务器发送请求,当浏览器中输入了一个开始文件或点击了一个超级链接时,浏览器就向服务器发送了HTTP请求,此请求被送往由IP地址指定的URL。驻留程序接收到请求,在进行必要的操作后回送所要求的文件。在这一过程中,在网络上发送和接收的数据已经被分成一个或多个数据包(packet),每个数据包包括:要传送的数据;控制信息,即告诉网络怎样处理数据包。TCP/IP决定了每个数据包的格式。如果事先不告诉你,你可能不会知道信息被分成用于传输和再重新组合起来的许多小块。
许多HTTP通讯是由一个用户代理初始化的并且包括一个申请在源服务器上资源的请求。最简单的情况可能是在用户代理(UA)和源服务器(O)之间通过一个单独的连接来完成。
当一个或多个中介出现在请求/响应链中时,情况就变得复杂一些。中介有三种:代理(Proxy)、网关(Gateway)和通道(Tunnel)。一个代理根据URI的绝对格式来接受请求,重写全部或部分消息,通过URI的标识把已格式化过的请求发送到服务器。网关是一个接收代理,作为一些其它服务器的上层,并且如果必须的话,可以把请求翻译给下层的服务器协议。一个通道作为不改变消息的两个连接之间的中继点。当通讯需要通过一个中介(例如:防火墙等)或者是中介不能识别消息的内容时,通道经常被使用

https

HTTPS (全称:Hyper Text Transfer Protocol over SecureSocket Layer),是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。 HTTPS 存在不同于 HTTP 的默认端口及一个加密/身份验证层(在 HTTP与 TCP 之间)。这个系统提供了身份验证与加密通讯方法。它被广泛用于万维网上安全敏感的通讯,例如交易支付等方面。

​HTTPS 主要由两部分组成:HTTP + SSL / TLS,也就是在 HTTP 上又加了一层处理加密信息的模块。服务端和客户端的信息传输都会通过 TLS 进行加密,所以传输的数据都是加密后的数据。
HTTP 原理
① 客户端的浏览器首先要通过网络与服务器建立连接,该连接是通过TCP 来完成的,一般 TCP 连接的端口号是80。 建立连接后,客户机发送一个请求给服务器,请求方式的格式为:统一资源标识符(URL)、协议版本号,后边是 MIME 信息包括请求修饰符、客户机信息和许可内容
② 服务器接到请求后,给予相应的响应信息,其格式为一个状态行,包括信息的协议版本号、一个成功或错误的代码,后边是 MIME 信息包括服务器信息、实体信息和可能的内容
HTTPS 原理
① 客户端将它所支持的算法列表和一个用作产生密钥的随机数发送给服务器
② 服务器从算法列表中选择一种加密算法,并将它和一份包含服务器公用密钥的证书发送给客户端;该证书还包含了用于认证目的的服务器标识,服务器同时还提供了一个用作产生密钥的随机数
③ 客户端对服务器的证书进行验证(有关验证证书,可以参考数字签名),并抽取服务器的公用密钥;然后,再产生一个称作 pre_master_secret 的随机密码串,并使用服务器的公用密钥对其进行加密(参考非对称加 / 解密),并将加密后的信息发送给服务器
④ 客户端与服务器端根据 pre_master_secret 以及客户端与服务器的随机数值独立计算出加密和 MAC密钥(参考 DH密钥交换算法
⑤ 客户端将所有握手消息的 MAC 值发送给服务器
⑥ 服务器将所有握手消息的 MAC 值发送给客户端

<think>嗯,用户想了解ASCII编码或者解决相关问题。首先,我需要回顾一下ASCII的基础知识,确保自己理解正确。根据引用[4],ASCII是美国信息交换标准代码,1967年发布,包含128个字符,其中33个控制字符和95个可显示字符。这点很重要,用户可能需要基础介绍。 接下来,用户的问题可能涉及编码错误,比如处理非ASCII字符时的UnicodeError。引用[1]中的例子,当用ASCII编码包含非ASCII字符的字符串时就会出错。这时候解决方案通常是使用UTF-8,因为如引用[2]提到的,UTF-8兼容ASCII,且能处理更多字符。 用户可能还关心ASCII和其他编码的区别,比如Unicode和UTF-8。引用[3]指出ASCIIGBK是传统编码,而UTF-8是Unicode的实现,变长编码。需要解释这些区别,帮助用户理解为什么有时候需要转换编码。 常见问题可能包括文件读写时的编码错误,或者网络传输中的数据编码问题。解决方案通常是明确指定编码格式,比如在Python中使用`encode('utf-8')`。此外,可能需要处理混合编码的文件,这时候需要检测编码或用错误处理策略,比如`errors='replace'`。 还要考虑用户的实际应用场景,比如Web开发、数据处理等,不同场景下的编码处理可能有不同最佳实践。例如,在HTTP头中常用ASCII,而内容部分多用UTF-8。需要举例说明,让用户更清楚如何应用解决方案。 另外,用户可能遇到控制字符的问题,比如在文本处理时遇到不可见的控制字符导致的问题。需要解释控制字符的作用,以及如何检测和处理它们,比如使用Python的`string`模块中的`printable`属性来过滤。 最后,总结常见问题和解决方案,确保结构清晰,分点说明,让用户能逐步理解和解决问题。同时,生成的相关问题要覆盖编码原理、错误处理、转换方法、控制字符和应用场景,帮助用户深入探索。</think>### ASCII编码介绍 ASCII(美国信息交换标准代码)是计算机系统中最早广泛使用的字符编码标准,定义了128个字符的二进制表示,包含33个控制字符(如换行符`\n`)和95个可显示字符(如字母、数字、标点符号)[^4]。 #### 核心特性 1. **编码范围**:使用7位二进制(0-127),例如: - `A` → 65 → `01000001` - `0` → 48 → `00110000` 2. **局限性**:仅支持英文字符,无法表示中文、日文等非ASCII字符[^3] #### ASCII与Unicode的关系 - Unicode是字符集,包含全球所有语言的符号 - UTF-8是Unicode的实现方式之一,兼容ASCII编码(ASCII字符的UTF-8编码与原ASCII相同)[^2] ### ASCII相关问题解决方案 #### 问题1:非ASCII字符编码错误 **场景**:尝试将中文文本编码为ASCII ```python s = "你好,世界" # ascii_string = s.encode('ascii') # 触发UnicodeEncodeError[^1] ``` **解决**: 1. 使用UTF-8编码 ```python utf8_string = s.encode('utf-8') # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c' ``` 2. 添加错误处理策略 ```python ascii_with_replace = s.encode('ascii', errors='replace') # 替换无法编码的字符为? ``` #### 问题2:混合编码文件处理 **场景**:读取包含ASCII和非ASCII字符的文件 ```python with open('data.txt', 'r', encoding='ascii') as f: # 可能触发UnicodeDecodeError content = f.read() ``` **解决**: 1. 检测实际编码(如UTF-8) ```python import chardet with open('data.txt', 'rb') as f: result = chardet.detect(f.read()) encoding = result['encoding'] ``` 2. 使用通用编码格式 ```python with open('data.txt', 'r', encoding='utf-8') as f: content = f.read() ``` #### 问题3:ASCII控制字符处理 **示例**:解析包含`\x07`(响铃符)的文本 ```python text = "Warning\x07" print(text) # 可能触发系统响铃 ``` **解决**: ```python clean_text = ''.join(c for c in text if c.isprintable()) ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值