字符集小结

最早的字符集是ASCII,它用一个字节的后7位来表示字母、数字、标点和其他常用字符,所以共有0-127个字符;后来又把第一位用上用来表示其他特殊的字符,这样就可以表示0-255个字符,这称为ASCII扩展字符集。

后来由于其他国家使用的的文字个数远超过使用英语国家的这些256个字符,所以为了支持本国语言在计算机上显示,不同国家开发出了不同的字符集,比如中国大陆一开始使用GB2312,后来扩展成了GBK(完全兼容GB2312),后来又扩展成了GB18030(支持少数民族语言)。而香港、台湾地区使用BIG5,日本使用Shift_JIS字符集。

ANSI标准字符集,即各语言使用的标准化的字符集,比如英文的ANSI字符集是指ASCII,简体中文的ANSI字符集指GBK、日文是Shift_JIS。

而MBCS(multi-byte character set)是多字节字符集的意思,他不是指某个具体的字符集,而是符合这种编码方式的字符集的统称,如GB2312、GBK、BIG5等都属于MBCS,即多字节字符集。由于最常见的还是用两个字节来表示一个字符所以又有了DBCS(double byte character set)也就是是双字节字符集这个统称。

再后来又出现了unicode,它规定了全球不同国家都可以统一使用的字符集,即所有国家的语言都按照一种编码方式来组织。实际上UNICODE也是一种统称,其具体实现方式又可以分为UTF-8,UTF-16,UTF-32等,而前两种是最通用的字符集。

UTF-8使用1-6个字节来存储一个字符,比如使用1个字节来存储英文字符,使用2个字符来存储拉丁文,使用3个字符来存储大部分汉字。互联网上基本上都使用UTF-8字符集。

UTF-16使用2或4个字节来存储一个字符,其大部分字符使用2个字节存储就可以了。现在如果说UNICODE字符集一般是指UTF-16字符集。在windows API中,UTF-16被仅以2个字节来存储,因为这两个字节可以表示大部分的字符,比如sizeof(wchar_t)的大小为2,而在linux上的UTF-16是以4个字节存储的,一个wchar_t占4个字节。

右键点击windows的CMD命令行程序的属性可以看到其使用的GBK,而linux的GCC中默认使用的是UTF-8编码。

时间: 2024-10-10 11:14:32

字符集小结的相关文章

mysql字符集小结

author:skate time:2013/04/09 mysql字符集小结 今天同事阿杰兄发现内部一台mysql测试服务器乱码,以前也记录过关于字符集的,今天再补充下 修改mysql的字符集和默认存储引擎 http://blog.csdn.net/wyzxg/article/details/7581415 查看库现有的字符集: mysql> show variables like '%char%'; +--------------------------+------------------

Oracle 字符集小结(遇到一例子:查询结果列标题为汉字,但是显示为‘?')

问题处理方式: 查询:select userenv('language') from dual; 对比电脑环境变量NLS_LANG的值与查询结果是否一致,如果不一致,修改电脑环境变量NLS_LANG 问题解决后通过查询资料对会话字符做了一些总结: 字符集分可为三类: 1.数据库服务器字符集: SELECT * FROM NLS_DATABASE_PARAMETERS NLS_DATABASE_PARAMETERS其来源于props$,是表示数据库的字符集. 2.客户端字符集环境 SELECT *

第09章 mysql 字符集

2015-10-24 目录 参考资料 [1] 唐汉明.深入浅出MySQL 数据库开发.优化与管理维护(第2版)[M].北京:人民邮电出版社,2014 [2] Schwartz.高性能MySQL(第3版)[M].北京:电子工业出版社,2013 [3] 范德兰斯.MySQL开发者SQL权威指南 [M].北京:机械工业出版社,2008 [4] Forta.MySQL必知必会 [M].北京:人民邮电出版社,2009 [5] Mysql字符集设置 [6] 修改及查看mysql数据库的字符集 [7] MyS

Http协议学习小结

本文是对这几天学习Http协议的基础知识的小结.内容包括了Http协议的原理,Http请求信息和Http响应信息以及Http协议状态码等内容. 1.Http协议的基本原理:有客户端向服务器发送请求,服务端对请求处理,对客户端进行相应.如下图所示. 图1 Http协议原理图 下面给出一个简单的请求和响应的示例代码: 客户端请求: GET / HTTP/1.1 Host: localhost Accept: text/html Accept-Language: en-us Accept-Encodi

DBA字符集管理(一)

原创作品,出自 "深蓝的blog" 博客,欢迎转载,转载时请务必注明以下出处,否则追究版权法律责任. 深蓝的blog:http://blog.csdn.net/huangyanlong/article/details/45749187 最近对字符集进行了相关的学习,通过查看相关书籍.在网上找找学习视频,在此结合学习笔记对字符集做一次简单总结. 通过一种自问自答的形式,希望可以帮助读者对字符集的知识做一次梳理. [不耻下问] 问题1:字符集的概念? 字符集,是字符和编码的对应"

PHP自定义框架部分知识点小结(一)

PHP自定义框架部分知识点小结(一) 网络上有大量优秀的MVC框架可供使用,但自定义框架并不是为了开发一个全面的.终极的MVC框架解决方案,而是将它看作是一个很好的从内部学习PHP的机会,在此过程中,将会学习面向对象编程和MVC设计模式,并学习到开发中的一些注意事项. Web MVC的流程体现如下图: 一个典型的Web MVC流程: Controller截获用户发出的请求: Controller调用对应的Model: Model调用DAO(基于PDO操作数据库的封装类)完成状态的读写操作: Co

DRP学习之路--Filter实现设置字符集

什么是filter? Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp,Servlet, 静态图片文件或静态  html 文件等进行拦截,从而实现一些特殊的功能.例如实现URL级别的权限访问控制.过滤敏感词汇.压缩响应信息等一些高级功能. ServletAPI中提供了一个Filter接口,开发web应用时,如果编写的Java类实现了这个接口,则把这个java类称之为过滤器Filter.通过Fi

MySQL 数据库常用命令小结

1.MySQL常用命令 create database name; 创建数据库 use databasename; 选择数据库 drop database name 直接删除数据库,不提醒 show tables; 显示表 describe tablename; 表的详细描述 select 中加上distinct去除重复字段 mysqladmin drop databasename 删除数据库前,有提示. 显示当前mysql版本和当前日期 select version(),current_dat

Oracle之别名小结

今天在写一个简单的SQL语句并执行时抛出了如下图所示的一个错误提示信息! 恩,此异常信息很明显,在SQL语句中标示符的长度过长了,简短一些就应该没问题了,我查看了一下我的SQL语句发现是我的查询字段的列别名过长,实际测试的结果为列字段别名的最大长度为30个字节! 注意:我的测试数据库是ORACLE 11.2.0.4.0(如下图所示) ok,问题搞定了,对应的更多的错误信息及解决方案,也可以从ORACLE的错误信息手册中查询比如(针对此问题): Error:ORA-00972: identifie