字符集实践

字符集实践报告

20135311傅冬菁

字符集由来及区别:

ASCII码,它以8bit字节为单位存储,ASCII的0-31及127为控制符,32-126为可见字符,包括所有的英文字母,阿拉伯数字和其他一些常见符号,128-255的ASCII码则没有定义。

ASCII对英语国家是够用了,但对其他西欧国家却不够用,因此,人们将ASCII扩展到0-255的范围,形成了ISO-8859-1字符集。

东方的文字(如中文)的字符数要大得多,根本不可能在一个字节内将它们表示出来,因此,它们以两个字节为单位存储,以中文国标字符集GB2312为例,它的第一个字节为128-255。系统可以据此判断,若第一个字节大于127,则把与该字节后紧接着的一个字节结合起来共两个字节组成一个中文字符。这种由多个字节存储一个字符的字符集叫多字节字符集(MultiByte Charsets),对应的象ASCII这种用一个字节存储一个字符的字符集叫单字节字符集(SingleByte Charsets)。在GB2312字符集中,ASCII字符仍然用一个字节存储,换句话说该ASCII是该字符集的子集。

GB2312只包含数千个常用汉字,往往不能满足实际需要,因此,人们对它进行扩展,这就有了我们现在广泛使用的GBK字符集,GBK是现阶段Windows及其他一些中文操作系统的缺省字符集。它包含2万多个字符,除了保持和GB2312兼容外,还包含繁体中文字,日文字符和朝鲜字符。值得注意的是GBK只是一个规范而不是国家标准,新的国家标准是GB18030-2000,它是比GBK包含字符更多的字符集。

国际标准ISO10646定义的通用字符集(Universal Character Set即UCS)的出现,使这种局面发生了彻底的改观。UCS 是所有其他字符集标准的一个超集. 它保证与其他字符集是双向兼容的. 就是说, 如果你将任何文本字符串翻译到 UCS格式, 然后再翻译回原编码, 你不会丢失任何信息。

修改默认字符集:

使用命令locale -a|grep zh_CN查看当前拥有的中文字符集,如果没有gb2312,则使用命令sudo locale-gen zh_CN安装字符集,之后在当前文件夹下使用命令: vim ~/.vimrc设置Vim RunTime Environment,将下面内容输入进该文件:

set fileencodings=utf-8,ucs-bom,gb18030,gbk,gb2312,cp936

set termencoding=utf-8

set encoding=utf-8

用多种字符集进行编写文件:

一、用ASCII码字符集:

首先,在ASCII码表中找到自己所要写的内容所对应的十六进制编码;我所想输入的内容是“I’ am FDJ”,所对应的十六进制数是4927616d46444a;

接下来,用vi打开我所想输入的文件。输入::%!xxd 转到十六进制文本模式。使用i对文本进行编辑,输入4927616d46444a即可。退出编辑模式,输入::%!xxd –r返回,这事显示了自己所要看到的内容“I’ am FDJ”,并保存。

使用cat指令查看文本内容:

二、使用GB2312字符集

同样是找到自己所要输入内容的GB2312码,我所想输入的内容是“傅冬菁不是富东京”,查找到对应的编码为b5b8 b6ac ddbc b2bb cac7 b8bb b6ab bea9;

首先将终端的编码方式改为GB2312;修改后使用命令locale –a|grep zh_CN查看是否有GB2312字符集。没有的话,就是用报告的第二部分内容进行修改。

使用vi 命令进入文本文件,同样输入::%!xxd 进入十六进制文本模式。将自己的编码输入文本中,以::%!xxd –r退出,之后保存。

使用cat指令查看:

三、使用UTF -8字符集

同样,先查找出我想输入内容的编码表示。我想输入的内容为“不是富东京”。用UTF-8编码表示为:e4b8b0 e698af e5afbc e4b89c e4babc;参照前面两个例子,将内容输出;

时间: 2024-10-06 02:44:58

字符集实践的相关文章

Linux课题实践三——字符集总结与分析

Linux课题实践三——字符集总结与分析 20135318  刘浩晨 字符是各种文字和符号的总称,包括各国家文字.标点符号.图形符号.数字等.字符集是多个字符的集合,字符集种类较多,每个字符集包含的字符个数不同,常见字符集名称:ASCII字符集.GB2312字符集.BIG5字符集. GB18030字符集.Unicode字符集等. 1.总结ISO.UCS/UTF.GB系列字符集的由来.异同 (1).ISO/IEC ISO/IEC 646:是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定

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

Linux及安全实践五——字符集编码 一.ASCII码 在表中查找出英文字母LXQ相对应的十六进制数值为: 4c 58 51 在终端中输入命令:vim test1.txt 在vim页面输入命令:%!xxd 输完之后使用命令:%!xxd -r保存后即可看到如下结果: 退出vim编辑器,在终端输入命令:cat test.txt可以查看到test.txt中的内容 二.gb2312编码 在编码表中查找出李雪琦相对应的十六进制数值为: c0ee d1a9 e7f9 在进行vim编辑的时候,首先将终端的编码

字符集与字符编码的强化理解与操作实践

字符集与字符编码的强化理解与操作实践 踩坑 最近在工作中遇到了一个说大不大说小不小的问题,就是当我解析一个xml文件的时候,抛出了一个"Invalid byte 2 of 2-byte UTF-8 sequence"的异常,这个异常会导致解析直接退出,显然不能容忍.查阅相关资料稍微定位了一下,大概知道是字符集的问题,仔细一看,xml文件中的确有中文字符,而且当我把这些中文字符删了之后的确又能解析成功.不过我还是不能理解这当中的缘由,不过由于时间原因,当时只是把中文字符删了就草草完工.现

单机数据库优化的一些实践(mysql)

数据库优化有很多可以讲,按照支撑的数据量来分可以分为两个阶段:单机数据库和分库分表,前者一般可以支撑500W或者10G以内的数据,超过这个值则需要考虑分库分表.另外,一般大企业面试往往会从单机数据库问起,一步一步问到分库分表,中间会穿插很多数据库优化的问题.本文试图描述单机数据库优化的一些实践,数据库基于mysql,如有不合理的地方,欢迎指正. 1.表结构优化 在开始做一个应用的时候,数据库的表结构设计往往会影响应用后期的性能,特别是用户量上来了以后的性能.因此,表结构优化是一个很重要的步骤.

MySQL性能优化的21个最佳实践

今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存.这是提高性最有效的方法之一,而且这是被My

NFS存储服务深度实践

第1章 NFS介绍 1.1 什么是NFS? NFS 是Network File System的缩写,中文意思是网络文件系统.它的主要功能是通过网络(一般是局域网)让不同的主机系统之间可以共享文件或目录.NFS客户端(一般为应用服务器,例如web)可以通过挂载(mount)的方式将NFS服务器端共享的数据目录挂载到NFS客户端本地系统中(就是某一个挂载点下).从客户端本地看,NFS服务器端共享的目录就好像是客户端自己的磁盘分区或者目录一样,而实际上却是远端的NFS服务器的目录. NFS网络文件系统

ySQL性能优化的21个最佳实践 和 mysql使用索引

MySQL性能优化的21个最佳实践 和 mysql使用索引 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更是我 们程序员需要去关注的事情.当我们去设计数据库表结构,对操作数据库时(尤其是查表时的SQL语句),我们都需要注意数据操作的性能.这里,我们不会讲过 多的SQL语句的优化,而只是针对MySQL这一Web应用最多的数据库.希望下面的这些优化技巧对你有用. 1. 为查询缓存优化你的查询 大多数的MySQL服

App 后台架构设计方案 设计思想与最佳实践

转载请注明出处:http://blog.csdn.net/smartbetter/article/details/53933096 做App做的久了,就想研究一下与之相关的App后台,发现也是蛮有趣的.App后台的两个重要作用就是 远程存储数据 和 消息中转.这里面的知识体系也是相当复杂,做好一个App后台也是需要长期锤炼的.本篇文章从 App 后台架构 的角度介绍.好了,下面进入正题: 说起架构,我们先看一下何为架构,百度百科是这样说的:架构,又名软件架构,是有关软件整体结构与组件的抽象描述,

一个复杂系统的拆分改造实践

1 为什么要拆分? 先看一段对话. 从上面对话可以看出拆分的理由: 1)  应用间耦合严重.系统内各个应用之间不通,同样一个功能在各个应用中都有实现,后果就是改一处功能,需要同时改系统中的所有应用.这种情况多存在于历史较长的系统,因各种原因,系统内的各个应用都形成了自己的业务小闭环: 2)  业务扩展性差.数据模型从设计之初就只支持某一类的业务,来了新类型的业务后又得重新写代码实现,结果就是项目延期,大大影响业务的接入速度: 3)  代码老旧,难以维护.各种随意的if else.写死逻辑散落在应