《Linux及安全》实践三 字符集总结与分析

【by lwr】

一、ISO、UCS/UTF、GB系列字符集分析

1.字符集&字符编码

  • 字符集(Charset):是一个系统支持的所有抽象字符的集合。也就是说,这是相对固定的、包含大量字符的集合。

  • 字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。也就是说,这是动态的、方法性质的编码规则。

2.ASCII码

  • 总述:

    • ASCII(美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本EASCII则可以勉强显示其他西欧语言。它是现今最通用的单字节编码系统,等同于国际标准ISO/IEC 646
  • 码字表
    • ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语。

3.GB码

  • 总述:

    • GB2312或GB2312-80是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局发布
    • GB2312规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(称之为高字节)从0xA1到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样就可以组合出大约7000多个简体汉字
    • 在这些编码里,还把数学符号、罗马希腊的 字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127号以下的那些就叫"半角"字符。

4.UCS/UTF

  • 总述:

    • 通用字符集(Universal Character Set,UCS)是由ISO制定的ISO 10646(或称ISO/IEC 10646)标准所定义的标准字符集
    • Unicode 是基于通用字符集(Universal Character Set)的标准来发展,并且同时也以书本的形式[1]对外发表。Unicode 还不断在扩增, 每个新版本插入更多新的字符。
  • 以UTF-8为例
    • UTF-8使用一至四个字节为每个字符编码:

      1. 128个US-ASCII字符只需一个字节编码(Unicode范围由U+0000至U+007F)。
      2. 带有附加符号的拉丁文、希腊文、西里尔字母、亚美尼亚语、希伯来文、阿拉伯文、叙利亚文及它拿字母则需要二个字节编码(Unicode范围由U+0080至U+07FF)。
      3. 其他基本多文种平面(BMP)中的字符(这包含了大部分常用字)使用三个字节编码。
      4. 其他极少使用的Unicode辅助平面的字符使用四字节编码。

二、设置、修改系统默认字符集

1.查看虚拟机的字符集:

    • 由此可见,该虚拟机的字符集为zh_US.UTF-8。

2.查看服务器支持的编码方式

3.修改字符集类型

    • 上图可见,LANG字符集类型修改为en_CA.utf-8。

4.查看某个文件的字符类型

    • 由此可见,我选择的hello.c文件是ASCII编码方式的

三、同一文件的不同存储方式

1.编写文件并以不同方式存储

  1. 编写内容均为“20135216刘蔚然[回车]LWR”的文本文件,分别用ANSI、Unicode、Unicode big endian、UTF-8的编码方式存储

  2. 下载并安装UltraEdit
  3. 用该软件打开对应文件之后,转换为16进制

  4. 查看编码表,找到分别对应ANSI、Unicode、UTF-8的本人姓名编码
    • C1F5 5218 E5 88 98 刘
    • CEB5 851A E8 94 9A 蔚
    • C8BB 7136 E7 84 B6 然
  5. 查看各编码方式
      • 汉字部分为C1F5 CEB5 C8B8就是“刘蔚然”的gb3212编码,而阿拉伯数字20135216(32 30 31 33 35 32 31 36)和英文字母LWR(4C 57 52)都是用ascii编码表示,大端方式编码。
      • 最开头有一个FE FF ,代表采用大端方式,依然是unicode编码,5218 851A 7136仍然是Unicode表示本人姓名的编码,而阿拉伯数字20135216(0032 0030 0031 0033 0035 0032 0031 0036)和英文字母LWR(004C 0057 0052)都是用ascii编码表示,也采用大端
      • 最开头有一个FF FE,代表着ucs-2,采用小端方式,其他同上面的Unicode big endian
      • 开头是EF BB BF是utf-8的标志,之后的编码按照大端方式排列,汉字实用的是utf-8格式:E5 88 98 E8 94 9A E7 84 B6;而数字20135216仍然是ASCII码(32 30 31 33 35 32 31 36),字母也是ASCII码(LWR)
  6. 总结
    • 我们发现这4种编码方式只是汉字不同格式运用不同编码,而阿拉伯数字和英文字母都是用ascii编码表示,也就是为什么我们有时候打开一个文件会出现乱码,而阿拉伯数字和英文字母都是正常的原因,汉字在不同的编码格式中都是有不同的汉字编码,而阿拉伯数字和英文字母通用ascii编码表示。

《Linux及安全》实践3.3的更多相关文章

  1. paip.java win程序迁移linux的最佳实践

    paip.java win程序迁移linux的最佳实践 1.class load路径的问题... windows哈第一的从calsses目录加载,,而linux优先从jar加载.. 特别的是修理了ja ...

  2. 【转载】Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载六)Linux的网络配置

    本篇是Linux小白最佳实践第6篇,目的就是让白菜们了解Linux网络是如何配置的.Linux系统在服务器市场占有很大的份额,尤其在互连网时代,要使用计算机就离不开网络. 想每天能听到小妞的语音播报, ...

  3. Linux小白最佳实践:《超容易的Linux系统管理入门书》(连载五)Linux系统的对话方式

    本篇是Linux小白最佳实践第5篇,目的就是让白菜们了解Linux进程之间是如何对话的.之前连载的几篇,在微信上引起了很多的反响,有人也反映图多文字少,感觉没有干货.本篇选了大部分是实战讲解的&quo ...

  4. Linux及安全实践五——字符集编码

    Linux及安全实践五——字符集编码 一.ASCII码 在表中查找出英文字母LXQ相对应的十六进制数值为: 4c 58 51 在终端中输入命令:vim test1.txt 在vim页面输入命令:%!x ...

  5. Linux及安全实践四——ELF文件格式分析

    Linux及安全实践四——ELF文件格式分析 一.ELF文件格式概述 1. ELF:是一种对象文件的格式,用于定义不同类型的对象文件中都放了什么东西.以及都以什么样的格式去放这些东西. 二.分析一个E ...

  6. Linux及安全实践三——程序破解

    Linux及安全实践三--程序破解 一.基本知识 常用指令机器码 指令 作用 机器码 nop 无作用(no operation) 90 call 调用子程序,子程序以ret结尾 e8 ret 返回程序 ...

  7. Linux及安全实践二——模块

    Linux及安全实践二--模块 一.模块的编译.生成.测试.删除 1.编写模块代码 编写:gedit 3.c 2.编写Makefile obj-m :这个变量是指定你要声称哪些模块模块的格式为 obj ...

  8. Linux及安全实践二

    Linux及安全实践二   基本内核模块 20135238 龚睿 1.  理解模块原理 linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个 ...

  9. 20135323符运锦----LINUX第二次实践:内核模块编译

    Linux实践二--模块 一.知识点总结 ①Linux模块是一些可以作为独立程序来编译的函数和数据类型的集合.之所以提供模块机制,是因为Linux本身是一个单内核.单内核由于所有内容都集成在一起,效率 ...

  10. linux内核分析实践二学习笔记

    Linux实践二--内核模块的编译 标签(空格分隔): 20135328陈都 理解内核的作用 Linux内核[kernel]是整个操作系统的最底层,它负责整个硬件的驱动,以及提供各种系统所需的核心功能 ...

随机推荐

  1. 解决linux系统启动之:unexpected inconsistency:RUN fsck

    现象: 虚拟机在启动过程中提示: unexpected inconsistency;RUN fsck MANUALLY 原因分析: 1.由于意外关机导致的文件系统问题 解决方法: 方法1: 输入ROO ...

  2. October 16th Week 43rd Sunday 2016

    Life is not a problem to be solved, but a reality to be experienced. 人生不是待解决的难题,而是等着我们去体验的现实. Life i ...

  3. 给Jquery动态添加的元素添加事件

    给Jquery动态添加的元素添加事件 来源:[http://wangqixia.diandian.com/post/2011-05-10/6597866] 我想很多人都会向我一样曾经 被新元素的事件绑 ...

  4. 没有为扩展名“.html”注册的生成提供程序

    asp.net提示“ 没有为扩展名“.html”注册的生成提供程序... ” 解决办法,修改web.config文件: <compilation debug="true"&g ...

  5. Intel VT入门

    前言     传说中的VT貌似很神秘的样子,关于VT入门的资料又很少,于是研究了一番 由于资源有限,自身水平亦有限,并且是闭门造车之作,如有错误的地方请指正,不胜感激! 关于VT可以先参考海风月影写的 ...

  6. 数据类型和Json格式

    1. 前几天,我才知道有一种简化的数据交换格式,叫做yaml. 我翻了一遍它的文档,看懂的地方不多,但是有一句话令我茅塞顿开. 它说,从结构上看,所有的数据(data)最终都可以分解成三种类型: 第一 ...

  7. Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)

    写入:没有关闭流,容错并不完善. private void insertFile(HttpServletRequest request, HttpServletResponse response) t ...

  8. BZOJ3752 : Hack

    折半爆搜,首先爆搜出所有长度不超过$4$的串. 对于每个询问,首先暴力枚举所有长度不超过$4$的串,以及前$4$位相同时后面的串. 然后枚举前$4$位,以及后面的串长,那么后面的hash值唯一,可以双 ...

  9. CSS的Hack技术

    主要是用来解决兼容性的特殊方法: IE都能识别*;标准浏览器(如FF)不能识别*: IE6能识别*,但不能识别 !important, IE7能识别*,也能识别!important,还有# FF不能识 ...

  10. tornado 学习笔记8 模板以及UI

          Tornado 包含一个简单.快速而且灵活的模板语言.       Tornado同样可以使用任何其他的python模板语言,虽然没有集成这些模板语言进RequestHandler.ren ...