热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

将网页内容编码方式改为gb2312_ASCII、ANSI、GB2312、GBK、UNICODE、UTF8五种编码的简介...

微信公众号:PHP在线【摘要】本文介绍一下ASCII、ANSI、GB2312、GBK、UNICODE、UTF-8这五种编码的区别与联系,有助于大家进一步

微信公众号:PHP在线

【摘要】本文介绍一下 ASCII、ANSI、GB2312、GBK、UNICODE、UTF-8 这五种编码的区别与联系,有助于大家进一步的掌握计算机相关知识与开发的基本理论知识。

一、ASCII 码

ASCII:"American Standard Code for Information Interchange",叫做 "美国信息交换标准码"。所有数据存储在计算机内都是以一个二进制的字符串表达的。每个二进制位(bit)有 0 和 1 两种状态。八个二进制位(bit)成为一个字节 (byte), 从 0000 0000 到 1111 1111 间 ,可以组成 256 种状态。ASCII 码一共规定了 128 个字符的编码,0-9A-Za-z 等等,只占用了一个字节的后 7 位,最前面一位都是 0。即 0000 0000 到 0111 1111 间。

二、ANSI、GB2312、GBK

英文用 128 个符号编码就够了,但是每个国家都有自己的语言,法语、日语、中文简体、中文繁体等等,在现有的 ASCII 码表中是无法表示出来的。对于中文简体电脑系统中,咱们国家标准总局发布了 GB2312 ,即扩展了 ASCII 码,最后出现了 GB2312、GBK 等,GB2312 是简体中文的码,GBK:支持简体中文及繁体中文、兼容 GB2312 编码,BIG5 是支持繁体中文。GB2312 使用两个字节来存储一个汉字的,这样就可以存储较多的汉字了,这里就不详谈 GB2312 的编码方式了,但是要记住一点,GB2312、GBK 与 Unicode 和 UTF-8 是没有关联的,这是咱们国家自己定义的标准。当然除了中文简体系统,还有日文系统 Shift_JIS ,韩文系统 EUC_KR,法文系统等等不同国家自己对于 ASCII 码的扩展,都是基于 ASCII 采用一个、两个或者三个字节的扩充,这里不详谈。然后我们就使用 ANSI 来对 GB2312,GBK,Shift_JIS,EUC_KR 进行一个统称,即指不同国家对 ASCII 编码的扩展,成为 ANSI 。这样在中文简体电脑系统下 ANSI 默认指的是 GB2312,在繁体系统下默认是采用 BIG5 编码,在日文电脑系统中 ANSI 默认是 Shift_JIS 编码,韩文就是 EUC_KR。不同国家的不同 ANSI 编码是互补兼容的,相互独立的。

三、UNICODE、UTF-8

每个国家都有自己的编码,就会造成一个问题就是同一个二进制数在不同的编码下可能对应着不同的符号。因此,想要打开一个文本文件,若它在日文系统中 ANSI 编码是 Shift_JIS ,将它拷贝到中文简体系统中,也使用 ANSI 编码打开,就会出现乱码,原因是中文简体系统中的 ANSI 编码是 GB2312 ,对于日文编码是无法识别的,无法找到对应的符号,所以出现乱码。这样的话,Shift_JIS 编码的文件就只能在日文系统下正常打开。为了能够实现不同国家编码能够在不同系统下互通,于是乎就出现了 UNICODE 符号集 和 UTF-8 编码。UNICODE 称为统一码或者万国码 。UNICODE 不是一种编码方式,而是一个符号集合,规定了全世界每个符号对应的二进制数,这一个全球范围内的统一。而 UTF-8 就是 UNICODE 的实现方式之一。UTF-8 编码的最大特点是,它是可变长编码方式,它可以使用 1-4 个字节表示一个符号。编码方式如下:(1)对于单字节,UTF-8 编码与 ASCII 码是一样的。(2)对于 n 字节编码(n = 2,3,4),如下图所示,即将符号对应的二进制码从右到左对 xxx 符号进行替换,位数不够,则用 0 替换。当然 UNICODE 的实现方式还有 UTF-16 等等,具体我也不清楚是什么编码方式,也不用去了解。

44ac6a6f51890eb9ffdc48affae6e816.png

四、编码的转换

通过万国码 UNICODE 可以实现编码之间的转换:ANSI 转 UTF-8 :先将 ANSI 转换为 Unicode ,然后将 Unicode 转换为 UTF-8;UTF-8 转 ANSI : 先将 UTF-8 转为 Unicode,然后将 Unicode 转为 ANSI。这样我们就可以将不同的 ANSI 进行相互转换喽。
版权归 马富天PHP博客 所有
转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

9a4584acde80007a2dcefd65d484dd8f.png




推荐阅读
  • 本文回顾了作者初次接触Unicode编码时的经历,并详细探讨了ASCII、ANSI、GB2312、UNICODE以及UTF-8和UTF-16编码的区别和应用场景。通过实例分析,帮助读者更好地理解和使用这些编码。 ... [详细]
  • 本文介绍了编程语言的基本分类,包括机器语言、汇编语言和高级语言的特点及其优缺点。随后详细讲解了Python解释器的安装与配置方法,并探讨了Python变量的定义、使用及内存管理机制。 ... [详细]
  • mybatis 详解(七)一对一、一对多、多对多
    mybatis详解(七)------一 ... [详细]
  • 本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ... [详细]
  • DirectShow Filter 开发指南
    本文总结了 DirectShow Filter 的开发经验,重点介绍了 Source Filter、In-Place Transform Filter 和 Render Filter 的实现方法。通过使用 DirectShow 提供的类,可以简化 Filter 的开发过程。 ... [详细]
  • PHP函数的工作原理与性能分析
    在编程语言中,函数是最基本的组成单元。本文将探讨PHP函数的特点、调用机制以及性能表现,并通过实际测试给出优化建议。 ... [详细]
  • Redis 是一个高性能的开源键值存储系统,支持多种数据结构。本文将详细介绍 Redis 中的六种底层数据结构及其在对象系统中的应用,包括字符串对象、列表对象、哈希对象、集合对象和有序集合对象。通过12张图解,帮助读者全面理解 Redis 的数据结构和对象系统。 ... [详细]
  • 本文探讨了SSD购买后是否需要进行4K对齐的问题,并详细解释了4K对齐的原理及其重要性。通过对比机械硬盘与固态硬盘的结构,文章深入分析了4K对齐对SSD性能的影响,并提供了具体的对齐方法。 ... [详细]
  • 【转】强大的矩阵奇异值分解(SVD)及其应用
    在工程实践中,经常要对大矩阵进行计算,除了使用分布式处理方法以外,就是通过理论方法,对矩阵降维。一下文章,我在 ... [详细]
  • 2023年最新指南:如何在PHP中屏蔽警告和错误
    本文详细介绍了如何在PHP中屏蔽警告和错误,包括多种方法和最佳实践,帮助开发者提升代码质量和安全性。 ... [详细]
  • 解决Unreal Engine中UMG按钮长时间按住自动释放的问题
    本文探讨了在Unreal Engine中使用UMG按钮时,长时间按住按钮会导致自动释放的问题,并提供了详细的解决方案。 ... [详细]
  • 高端存储技术演进与趋势
    本文探讨了高端存储技术的发展趋势,包括松耦合架构、虚拟化、高性能、高安全性和智能化等方面。同时,分析了全闪存阵列和中端存储集群对高端存储市场的冲击,以及高端存储在不同应用场景中的发展趋势。 ... [详细]
  • 第十九天 - 类的约束、异常处理与日志记录
    本文介绍了如何通过类的约束来确保代码的一致性,以及如何使用异常处理和日志记录来提高代码的健壮性和可维护性。具体包括抛出异常、使用抽象类和方法,以及异常处理和日志记录的详细示例。 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • Visual Studio Code (VSCode) 是一款功能强大的源代码编辑器,支持多种编程语言,具备丰富的扩展生态。本文将详细介绍如何在 macOS 上安装、配置并使用 VSCode。 ... [详细]
author-avatar
逢源堂_344
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有