字符集和字符编码
2015-06-22 22:38
239 查看
字符集(Charset)
字符集(Charset):是一个系统支持的所有抽象字符的集合。字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等,人们从日常生活中接触到的字符的集合,计算机无法识别。常用的字符集
常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、通用字符集(Universal Character Set,UCS)、Unicode字符集等。计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。其中当前中文简体用的是GB2312;
Unicode字符集是基于通用字符集(Universal Character Set)的标准来发展;
字符编码(Character Encoding)
字符编码(Character Encoding):是一套法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合(如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。通常人们用符号集合(一般情况下就是文字)来表达信息。而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码;即通过计算机可识别的0或1组成的一串2进制数据代表字符;常用的字符编码
常用的字符集编码:ASCII编码、EASCII编码、UTF-8、UTF-16、UTF-32;字符编码和字符集的对应关系
字符集 | 字符编码 | 备注 |
---|---|---|
ASCII | ASCII | |
GB2312 | EASCII | 不同的字符集如简体中文、繁体中文等字符集共用相同编 码区,计算机通过代码页进行切换不同的编码 |
UCS | ||
Unicode | UTF-8 | |
Unicode | UTF-16 | |
Unicode | UTF-32 |
对于按照EASCII编码表示的字符集如简体中文(简体、中国)(GB2312),中文(简体、新加坡),由于共用相同的编码区,所以出现了代码页的概念,操作系统中只有设置相依的代码页,显示正常;
但是,在电脑上做测试出现一个问题:
当我把代码页切换到英语(美国)的时候,盘符上的汉字无法显示、乱码;而文件夹路径中的中文正常显示;感觉好像盘符存在的文件为ASCII编码,而注册表为Unicode编码;
VS的看字节编码和多字节编码
操作系统为Unicode编码,所以系统函数原型为宽字节函数,而系统提供的单字节编码,是将宽字节函数封装了一层,也就是先用宽字节函数调用然后再通过宽字节转换为多字节函数,输出为单字节字符串,在转化过程中用的代码页为本地计算机设置的代码页;计算机设置本地代码页为英语(美国)的代码页,VS在多字节编码下,用系统函数获取中文路径为乱码的原因:由于在多字节编码中,VS自动将获取系统函数映射为单字节函数,也就是先调用宽字节函数,在将宽字节转换为本地代码页下的多字节,由于英语(美国)的代码页不存在中文,所以转换结果中出现’?’,造成获取系统文件名出问题;解决方案:计算机为英语(美国)代码页,VS在多字节编码设置时,读取中文路径可以通过强制使用宽字节函数,获取一个宽字节下的文件路径,然后通过宽字节转换为多字节,这里代码页参数为简体(中文)或UTF-8;转换后虽然调试时为乱码,但是数据没有问题,可以将数据通过多字节转换为宽字节,就可以显示中文;
相关文章推荐
- Linux下修改MySQL编码的方法
- 字符集导致的浏览器跨站脚本攻击分析
- C#实现移除字符串末尾指定字符的方法
- 基于字符集、字符编码与HTTP编码解码之万象详解
- mysql 字符集的系统变量说明
- 常用字符集编码详解(ASCII GB2312 GBK GB18030 unicode UTF-8)
- mysql字符集和数据库引擎修改方法分享
- php按字符无乱码截取中文的方法
- 一个JavaScript处理textarea中的字符成每一行实例
- JS去掉第一个字符和最后一个字符的实现代码
- Juery解决tablesorter中文排序和字符范围的方法
- JS中字符问题(二进制/十进制/十六进制及ASCII码之间的转换)
- 完美转换MySQL的字符集 解决查看utf8源文件中的乱码问题
- 字符集和字符编码(Charset & Encoding)
- Oracle字符集修改查看方法
- ASP中限制某些字符留言评论
- php中删除字符串中最先出现某个字符的实现代码
- js字符编码函数区别分析
- javascript开发技术大全 第4章 直接量与字符集
- js判断是否含有GBK以外的字符的函数