C#编程总结(九)字符编码 - oop.com.cn_面向对象设计网站 - 面向对象技术开发

面向对象技术开发

会员投稿 投稿指南 站长资讯通告:
您的位置: 首页 > OOP语言 > C# > 正文

C#编程总结(九)字符编码

来源: www.bianceng.cn 阅读:

相信大家一定遇到过乱码的问题,为什么会乱码呢?输出的数据怎么就跟输入的不一样呢?

最近在总结加密问题,也遇到了同样的困扰。所以今天来集中解决这个问题。

什么是字符?

字符是指计算机中使用的字母、数字、字和符号,包括:1、2、3、A、B、C、~!·#¥% ……—*()——+等等。

字符集(Charset)

字符集(Charset)是一个系统支持的所有抽象字符的集合。

字符是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。

什么是字符编码?

字符编码(Character Encoding):简单的说就是建立自然语言与机器语言之间的对应关系。是一套 法则,使用该法则能够对自然语言的字符的一个集合(如字母表或音节表),与其他东西的一个集合( 如号码或电脉冲)进行配对。即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技 术。通常人们用符号集合(一般情况下就是文字)来表达信息。而以计算机为基础的信息处理系统则是 利用元件(硬件)不同状态的组合来存储和处理信息的。元件不同状态的组合能代表数字系统的数字, 因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

计算机中的信息包括数据信息和控制信息,数据信息又可分为数值和非数值信息。非数值信息和控制 信息包括了字母、各种控制符号、图形符号等,它们都以二进制编码方式存入计算机并得以处理,这种 对字母和符号进行编码的二进制代码称为字符代码(Character Code)。计算机中常用的字符编码有 ASCII码(美国标准信息交换码)和EBCDIC码(扩展的BCD交换码)。

在 ASCII 编码中,一个英文字母字符存储需要1个字节。在 GB 2312 编码或 GBK 编码中,一个汉字 字符存储需要2个字节。在UTF-8编码中,一个英文字母字符存储需要1个字节,一个汉字字符储存需要3 到4个字节。在UTF-16编码中,一个英文字母字符或一个汉字字符存储都需要2个字节(Unicode扩展区的 一些汉字存储需要4个字节)。在UTF-32编码中,世界上任何字符的存储都需要4个字节。

困扰与疑惑?

1、为什么会有字符编码?

含义介绍中已经给出了解释,字符编码就是让计算机识别自然语言。

2、为什么会有这么多的字符集?

计算机发展分不同阶段,最开始只是美国通用,建立了ASCII码,但是一些欧洲国家字符无法使用 ASCII码,然后就对ASCII进行了扩展补充,后来中国要使用计算机,为了标记汉语,定义了GB2312、GBK 、BIG5等,还有其他一些字符集。

3、就没有一种统一的字符集吗?

有,Unicode

4、UTF8与Unicode是什么关系?

UTF8是Unicode的一种实现方式。

常用的几种编码

1. ASCII码

ASCII(American Standard Code for Information Interchange,美国信息交换标准代码)是基于 拉丁字母的一套电脑编码系统。

ASCII字符集:主要包括控制字符(回车键、退格、换行键等);可显示字符(英文大小写字符、阿 拉伯数字和西文符号)。

特点:单字节编码,只包含大小写英文字母、标点符号及其他符号。

ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。使用7位(bits)表示一 个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII 进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。

计算机为美国人发明,开始的时候也只能满足自己,所以说此编码很有局限性。在其他的国家、其他 语种无法使用此编码集。

根据ASCII码的编码规则,最多只能标识256个字符,但是世界上有那么多语言,汉字就多达10万左右 ,那么多字符,显然很有局限性。

Tags:
相关文章列表: