字符集和字符编码(Charset & Encoding)

合集下载

字符集、编码和字体

字符集、编码和字体

字符集、编码和字体三个基本概念--------------------------------------------要在计算机上读取、保存、书写和显示文字,涉及到三个基本概念。

1. 字符集字符集可以说是一个抽象的概念,就是所有文字的集合,然后每个字都有一个独一无二的编号。

下面讲的编码,其实就是对字符集中的字符、在其书写、现实和存取过程中的具体编码方法。

两者不同,但实际上经常有人直接用编码来表示字符集和编码两者。

比如unicode,本身是一个字符集,就是相当于用2个字节,即最多65535个编号来表示所有的字符。

(另,由于65535个编号表示各种语言,还远远不够,所以UNICODE 4.0又增加了2个字节,所以unicode字符实际上有4个字节表示一个字符)。

注意这里并没有规定在具体实现中用2个字节来存储的问题,因为字符集不涉及到实现的问题。

而基于Unicode字符集的UTF-16编码方法就是直接用2个字节来表示它,所以很多人把unicode和UTF-16混为一谈。

2. 编码编码是一个实际的概念,就是字符集中的字符在计算机中如何用字节表示出来。

比如对于unicode字符集,就用UTF-8、UTF-16、UTF-16 Little Endian以及UTF-32等多种编码方法。

比如UTF-8,能够灵活表达unicode字符,有些用1个字节即可,有些用2个字节,甚至还有用更多字节的。

3. 字体字节是用来显示文字的,计算机拿到字符后,要将其显示出来,即需要用字体,比如宋体等。

如果选用的字体中没有对应某个字符的字体,则有可能显示乱码。

所以要将文字正确显示出来,不仅编码方法要正确,字体也要支持才行。

软件开发中文字操作的编码问题-------------------------------------------------1. 代码中的常量字符串定义比如代码中定义const char * city = "深圳",那么这里的编码方法就涉及到用了几个字节,字符编码ID是什么(这个实际上是字符集的问题,这里不再具体细分,统一用编码概念)。

计算机常见编码

计算机常见编码

计算机常见编码一.有关编码的基础知识1.位bit最小的单元字节byte机器语言的单位1byte=8bit1KB=1024byte1MB=1024KB1GB=1024MB2.二进制binary 八进制octal十进制decimal十六进制he某3.字符:是各种文字和符号的总称,包括各个国家的文字,标点符号,图形符号,数字等。

字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。

字符编码:字符集只是规定了有哪些字符,而最终决定采用哪些字符,每一个字符用多少字节表示等问题,则是由编码来决定的。

计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

二.常见字符集的编码介绍:常见的字符集有:ASCII字符集,GB2312字符集,BIG5字符集,GB18030字符集,Unicode字符集,下面一一介绍:1.ASCII字符集:定义:美国信息互换标准代码,是基于罗马字母表的一套电脑编码系统,主要显示英语和一些西欧语言,是现今最通用的单字节编码系统。

包含内容:控制字符(回车键,退格,换行键等)可显示字符(英文大小写,阿拉伯数字,西文符号)扩展字符集(表格符号,计算符号,希腊字母,拉丁符号)编码方式:第0-31号及127号是控制字符或通讯专用字符;第32-126号是字符,其中48-57号为0-9十个阿拉伯数字,65-90号为26个大写英文字母,97-122号为26个英文小写字母,其余为一些标点符号,运算符号等。

在计算机存储单元中,一个ASCII码值占一个字节(8个二进制位),最高位是用作奇偶检验位。

【奇偶校验是指:在代码传送的过程中,用来检验是否出错的一种方法。

】奇偶校验分为奇校验和偶校验。

奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位添1;偶校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位添1。

2.GB2312字符集:定义:信息交换用汉字编码字符集。

计算机“字符”,“字节”以及各单位说明

计算机“字符”,“字节”以及各单位说明

计算机“字符”,“字节”以及各单位说明字符与字节ASCII码:⼀个英⽂字母(不分⼤⼩写)占⼀个字节的空间,⼀个中⽂汉字占两个字节的空间。

⼀个⼆进制数字序列,在计算机中作为⼀个数字单元,⼀般为8位⼆进制数,换算为⼗进制。

最⼩值0,最⼤值255。

如⼀个ASCII码就是⼀个字节。

UTF-8编码:⼀个英⽂字符等于⼀个字节,⼀个中⽂(含繁体)等于三个字节。

Unicode编码:⼀个英⽂等于两个字节,⼀个中⽂(含繁体)等于两个字节。

符号:英⽂标点占⼀个字节,中⽂标点占两个字节。

举例:英⽂句号“.”占1个字节的⼤⼩,中⽂句号“。

”占2个字节的⼤⼩。

不同数量级间数据存储是以10进制表⽰,数据传输是以2进制表⽰的,所以1KB不等于1000B。

1KB=1024B;1MB=1024KB=1024×1024B。

其中1024=210。

1B(byte,字节)= 8 bit(见下⽂);1KB(Kibibyte,千字节)=1024B= 2^10 B;1MB(Mebibyte,兆字节,百万字节,简称“兆”)=1024KB= 2^20 B;1GB(Gigabyte,吉字节,⼗亿字节,⼜称“千兆”)=1024MB= 2^30 B;1TB(Terabyte,万亿字节,太字节)=1024GB= 2^40 B;1PB(Petabyte,千万亿字节,拍字节)=1024TB= 2^50 B;1EB(Exabyte,百亿亿字节,艾字节)=1024PB= 2^60 B;1ZB(Zettabyte,⼗万亿亿字节,泽字节)= 1024EB= 2^70 B;1YB(Yottabyte,⼀亿亿亿字节,尧字节)= 1024ZB= 2^80 B;1BB(Brontobyte,⼀千亿亿亿字节)= 1024YB= 2^90 B;1NB(NonaByte,⼀百万亿亿亿字节) = 1024 BB = 2^100 B;1DB(DoggaByte,⼗亿亿亿亿字节) = 1024 NB = 2^110 B;[1]存储类型以下以Visual Basic为例,讲解各种数据类型所占字节。

计算机字符编码

计算机字符编码

计算机字符编码⼀、有关编码的基础知识 1、计算机中存储单位位 bit 最⼩的单元字节 byte 机器语⾔的单位 1byte=8bits1KB = 1024byte2MB = 1024KB1GB = 1024MB 2、进制⼆进制 binary⼋进制 octal⼗进制 decimal⼗六进制 hex 3、⼏个概念 (1)字符:是各种⽂字和符号的总称,包括各个国家的⽂字,标点符号,图形符号,数字等; (2)字符集:字符集是多个符号的集合,每个字符集包含的字符个数不同。

(3)字符编码:字符集只是规定了有哪些字符,⽽最终决定采⽤哪些字符,每⼀个字符⽤多少字节表⽰等问题,则是由编码来决定的。

计算机要准确的处理各种字符集⽂字,需要进⾏字符编码,以便计算机能够识别和存储各种⽂字。

⼆、字符编码的介绍⾸先来看⼀下常⽤的编码有哪些,截图⾃Notepad++。

其中ANSI在中国⼤陆即为GBK(以前是GB2312),最常⽤的是 GBK 和 UTF8⽆BOM 编码格式。

后⾯三个都是有BOM头的⽂本格式,UCS-2即为⼈们常说的Unicode编码,⼜分为⼤端、⼩端。

所谓BOM头(Byte Order Mark)就是⽂本⽂件中开始的⼏个并不表⽰任何字符的字节,⽤⼆进制编辑器(如bz.exe)就能看到了。

UTF8的BOM头为 0xEF 0xBB 0xBFUnicode⼤端模式为 0xFE 0xFFUnicode⼩端模式为 0xFF 0xFE 如图: ⼆、编码表的由来 计算机只能识别⼆进制数据,早期由来是电信号。

为了⽅便应⽤计算机,让它可以识别各个国家的⽂字。

就将各个国家的⽂字⽤数字来表⽰,并⼀⼀对应,形成⼀张表。

这就是编码表。

⼆、ASCII码 计算机⼀开始发明的时候是⽤来解决数字计算的问题,后来⼈们发现,计算机还可以做更多的事,例如⽂本处理。

但由于计算机只识“数”,因此⼈们必须告诉计算机哪个数字来代表哪个特定字符,例如65代表字母‘A’,66代表字母‘B’,以此类推。

字符集详解

字符集详解

字符集详解字符(Character)是文字与符号的总称,包括文字、图形符号、数学符号等。

一组抽象字符的集合就是字符集(Charset)。

字符集常常和一种具体的语言文字对应起来,该文字中的所有字符或者大部分常用字符就构成了该文字的字符集,比如英文字符集。

一组有共同特征的字符也可以组成字符集,比如繁体汉字字符集、日文汉字字符集。

字符集的子集也是字符集。

计算机要处理各种字符,就需要将字符和二进制内码对应起来,这种对应关系就是字符编码(Encoding)。

制定编码首先要确定字符集,并将字符集内的字符排序,然后和二进制数字对应起来。

根据字符集内字符的多少,会确定用几个字节来编码。

每种编码都限定了一个明确的字符集合,叫做被编码过的字符集(Coded Character Set),这是字符集的另外一个含义。

通常所说的字符集大多是这个含义。

下面我们来逐一认识一下常见的字符集。

ASCII:American Standard Code for Information Interchange,美国信息交换标准码。

目前计算机中用得最广泛的字符集及其编码,由美国国家标准局(ANSI)制定。

它已被国际标准化组织(ISO)定为国际标准,称为ISO 646标准。

ASCII字符集由控制字符和图形字符组成。

在计算机的存储单元中,一个ASCII码值占一个字节(8个二进制位),其最高位(b7)用作奇偶校验位。

所谓奇偶校验,是指在代码传送过程中用来检验是否出现错误的一种方法,一般分奇校验和偶校验两种。

奇校验规定:正确的代码一个字节中1的个数必须是奇数,若非奇数,则在最高位b7添1。

偶校验规定:正确的代码一个字节中1的个数必须是偶数,若非偶数,则在最高位b7添1。

ISO 8859-1:ISO 8859,全称ISO/IEC 8859,是国际标准化组织(ISO)及国际电工委员会(IEC)联合制定的一系列8位字符集的标准,现时定义了15个字符集。

汉字编码 信息技术

汉字编码 信息技术

GB2312
ቤተ መጻሕፍቲ ባይዱ
汉字编码
GB18030
GB 18030,是中华人民共和国现时最新的内码字集,是GB 18030-2000 《信息技术 信息交换用汉字编码字符集 基本集的扩充》的修订版。与 GB 2312-1980完全兼容,支持GB 13000及Unicode的全部统一汉字, 共收录汉字70244个。 GB 18030主要有以下特点: 与 UTF-8 相同,采用多字节编码,每个字可以由1个、2个或4个字节组 成。 编码空间庞大,最多可定义161万个字符。 支持中国国内少数民族的文字,不需要动用造字区。 本规格的初版是由中华人民共和国信息产业部电子工业标准化研究所起草, 由国家质量技术监督局于2000年3月17日发布。现行版本为国家质量监督 检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5 月1日实施。此规格为在中国境内所有软件产品支持的强制规格。
结语
汉字编码是中国信息技术发展 的支柱。它的出现代表了中国 信息技术的起步。随着需求的 改变,汉字编码仍会朝着需要 的方向发展。
结语
:-)
谢谢观赏
开始 汉字编码
字符集(Charset):是一个系统支持的所有 抽象字符的集合。字符是各种文字和符号 的总称,包括各国家文字、标点符号、图 形符号、数字等。
字符编码:是一套法则,使用该法则能够对自然语言 的字符的一个集合(如字母表或音节表),与其他东 西的一个集合(如号码或电脉冲)进行配对。即在符 号集合与数字系统之间建立对应关系,它是信息处理 的一项基本技术。通常人们用符号集合(一般情况下 就是文字)来表达信息。而以计算机为基础的信息处 理系统则是利用元件(硬件)不同状态的组合来存储 和处理信息的。元件不同状态的组合能代表数字系统 的数字,因此字符编码就是将符号转换为计算机可以 接受的数字系统的数,称为数字代码。

charset.defaultcharset()的逻辑

charset.defaultcharset()的逻辑

charset.defaultcharset()的逻辑1. 引言1.1 概述在计算机编程领域中,字符编码是一种将字符转换为二进制数据表示的方法。

而charset.defaultcharset()是一个函数,它在Java语言中用于获取当前默认字符集的名称。

1.2 文章结构本文将重点讨论charset.defaultcharset()函数的逻辑以及其在字符编码方面的应用。

首先将介绍这个函数的基本概念和用法,然后深入探讨它的实现原理和逻辑,最后通过具体案例和示例代码来说明其在实际工作中的应用场景。

1.3 目的本文旨在帮助读者更好地了解charset.defaultcharset()函数并理解其逻辑。

通过详细分析和解释该函数的用法及相关背景知识,读者将能够更加深入地理解字符编码领域中的重要概念,并能够正确使用该函数来处理字符编码问题。

请注意,本文不仅适用于那些对字符编码有较强兴趣和需求的程序员,也适合普通读者了解字符编码相关概念和技术。

无论您是初学者还是有一定经验的开发人员,在阅读完本文后都将从中获益良多。

下面将展开具体内容,详细讲解charset.defaultcharset()函数的逻辑和应用。

2. 正文在介绍charset.defaultcharset()的逻辑之前,我们先了解一下该函数的作用和背景。

charset.defaultcharset()是Python标准库中的一个函数,用于获取默认的字符编码。

在计算机科学中,字符编码是一种映射关系,将字符与二进制数字相对应。

不同的字符编码方式可以表示不同语言的字符集。

常见的字符编码方式包括ASCII、UTF-8、GBK等。

Python作为一种跨平台、可移植性强的编程语言,为了处理不同字符集的问题,提供了charset模块。

其中,charset.defaultcharset()函数就是用来查询系统默认的字符编码。

2.1 charset.defaultcharset()函数2.1.1 函数定义charset.defaultcharset()函数没有参数,返回一个字符串,表示系统默认字符编码。

PHPword 中文乱码,终极解决方案版+

PHPword 中文乱码,终极解决方案版+

PHPword中文乱码,终极解决方案版+在数字化办公的浪潮中,文档处理成了我们日常生活中不可或缺的一部分。

尤其是PHPword库,它让PHP开发者能够轻松Word文档。

但在实际应用中,中文乱码问题一直困扰着无数开发者。

今天,就让我这位有着十年方案写作经验的大师,来为大家揭晓终极解决方案!一、问题分析1.编码不一致编码不一致是导致中文乱码的主要原因。

PHPword默认使用的是UTF-8编码,但如果你的源文件、数据库或者其他环节使用了其他编码,比如GBK,那么中文乱码就出现了。

2.PHPword库版本问题不同版本的PHPword库,对中文的支持程度不同。

有些老版本的PHPword库可能存在中文乱码问题,而新版本则修复了这些问题。

3.字体问题Word文档中的字体如果不支持中文,也会导致中文乱码。

二、解决方案1.保持编码一致确保你的PHP代码、源文件、数据库等所有环节都使用UTF-8编码。

这样,从源头上避免编码不一致导致的中文乱码问题。

2.更新PHPword库检查你使用的PHPword库版本,如果发现是老版本,尽快升级到最新版本。

新版本的PHPword库对中文支持更好,可以解决中文乱码问题。

3.设置字体在Word文档时,设置一个支持中文的字体。

例如,你可以使用微软雅黑、宋体等字体。

具体操作如下:php$section->setFontFamily('微软雅黑');4.修改PHPword源码phppublicfunction__construct($text,$font=null,$bold=false,$ italic=false,$underline=null,$encoding='UTF-8') {//$this->encoding=$encoding;}phppublicfunctionsetText($text){//if($this->encoding=='UTF-8'){$text=mb_convert_encoding($text,'UTF-8','UTF-8');}//}这样,PHPword在处理文本时,会根据指定的编码进行转换,从而解决中文乱码问题。

disc在c语言中是什么意思

disc在c语言中是什么意思

disc在c语言中是什么意思在 C 语言中,使用到最多的一种数据类型就是 char 了,而且每次都要加上 char 指针变量,所以这种指针形式给我们带来了麻烦。

为此, C 语言引入了 charset(字符集)概念,通常用来表示某种编码方案下的字符串,而字符串通过它所包含的字符就可知道其实际意义,例如:比如说,如果我们需要将大小写字母转换成大小写数字,那么我们直接写上‘ a’或者‘ b’等等,然后就可以通过 charset 来获取,并输出对应的大小写字母。

这也就是为什么 C 语言中经常会遇到的就是 char 和 var 两个指针变量了,也有一些常见的字符都可以在内存中找到它们的对应位置,但是也有许多字符是找不到它们的。

disc 是一个函数名,它可以返回一个指向字符集的指针。

例如,如果需要将大写字母转换为小写字母,我们就可以用它来实现。

在上面的代码中,我们写出了 charset (& a),其中的 a 指向了一个字符数组,里面存放着字符 a,这样我们就只需要判断第二个参数的值即可得到其转换后的字符串。

当然, c 语言还提供了 stringof ()函数,该函数的功能更强大,它可以找到一个字符集。

当然,除了字符集外,还有 unicode、 Unicode 等都可以作为字符集。

看过这样的一句话“如果你不能很好地控制自己,就无法控制自己的情绪;如果你不能控制自己的情绪,就无法控制自己的人生”。

有时候,就算我们想改正自己身上的错误,却又无法真正的改正。

我觉得主要原因还是没有坚持做事的信心,让我们缺乏了恒心。

不过,在 C 语言中有一个非常有趣的函数—— delimstools (),该函数被用于检查 C 程序中的编译错误,但是它所产生的结果总是 null,不论怎么修改,结果总是 null。

于是, C 语言作者便增添了 creat ()函数,其作用与 delimstools 函数相同,但是效率更高,这就是所谓的野兽模式,这个模式让 C 语言的运行速度更快。

本地化工程常见问题

本地化工程常见问题

本地化工程常见问题1) 本地化工程是做什么的?为什么称为“工程”?本地化工程是本地化流程中的关键步骤。

本地化工程师负责流程中所有和技术相关的工作。

其中包括:项目文件准备、软件安装、编译和发布,以及支持翻译和项目经理,屏幕截图和测试等等。

之所以称为“工程”,是因为负责本地化的技术相关的工作的人必须具有从事技术工作的能力,必须具备相当程度的专业知识,必须熟练试用各种软件工具、翻译工具,熟悉多种操作系统、开发环境和本地化模式。

他们必须理解特定软件程序是怎样工作的,并且具有使用软件行业标准开发和编程环境的经验,例如Microsoft Visual Studio、Borland Delphi、Java Development Kit,还要能够选择并使用合适的辅助翻译工具,最后,还要能够对软件程序的功能进行测试,有时还有对发现的BUG进行修正。

另外,最基本的还需要具有读写英语的能力。

2) DTP是做什么的?DTP (Desktop Publishing)是桌面排版。

DTP 就是使用计算机及排版软件对版面上的文字和图片的位置布局进行编排。

另外还包括图片的本地化(编辑和修改图片和图表)。

3) 文本增长(Text Expansion)是什么意思?翻译后的文字比原文更长的情况叫做文本增长,例如从英文翻译成波兰语,通常会增长20%左右。

这一特点对软件界面的显示有很大影响,必须增大显示区域或者缩小字体。

4) 对库(Alignment)是什么意思?使用逐句匹配的方法,从翻译好的译文和源文中生成翻译记忆库的方法或操作。

5) 内部重复(Internal Repetitions)是什么意思?在同一个文档内重复出现的文字或句子。

通常他们的翻译也是相同的,所以只需要翻译一次。

6) 100% 匹配(100% Matches)是什么意思?100%匹配也叫做“完全匹配”或“精确匹配”。

在使用翻译记忆库工具时,如果在一个文档中,其中的某些短语或句子,能够与翻译记忆库中已有的文字片段完全相同,那么这些文字片段,就是100%匹配的。

C语言中的字符串与字符集详解

C语言中的字符串与字符集详解

C语⾔中的字符串与字符集详解字符集理论及应⽤详解⼀、字符集和字符编码1、定义字符集(Character Set/Charset)是⼀个系统⽀持的所有抽象字符的集合。

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

简单来说,字符集就是⼀个表。

这个表有两列,⼀列是各种字符,另⼀列是每个字符锁对应的编号。

注意,字符集只是⼀个规则,或者说是标准。

它只定义每个字符对应的编对应关系,⽽不存储每个字符的图像。

存储字符图像的是字体⽂件。

可以这样理解:字码,建⽴字符和数字的对应关系体⽂件中存了很多张图⽚,每⼀张图⽚都是⼀个字符的样⼦,同时每个图⽚都有⾃⼰的名字(可能不⽌⼀个),这个名字就是图⽚中的字符在字符集中的编码。

图⽚可以看作是字体⽂件中的⼀个字符,名字可以看作是其对应的编码(这⾥是Unicode字符集指定的编码)字符编码(Character Encoding)是⼀套法则,使⽤该法则能够对⾃然语⾔的字符的⼀个集合(如字母表或⾳节表),与其他东西的⼀个集合(如号码或电脉冲)进⾏配对。

即在符号集合与数字系统之间建⽴对应关系,它是信息处理的⼀项基本技术。

通常⼈们⽤符号集合(⼀般情况下就是⽂字)来表达信息。

⽽以计算机为基础的信息处理系统则是利⽤元件(硬件)不同状态的组合来存储和处理信息的。

元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

简单来说,字符编码就是表⽰字符的⽅法。

例如,如何将字符集中字符⾃⼰的编号存在计算机中。

2、常见字符集常见字符集有两⼤类,分别是ANSI和Unicode。

其中ANSI⼜包含了很多具体的字符集,例如GB2312,BIG5,Shift-JIS等。

ANSI字符集:ANSI编码包含了⼀系列字符集,所以准确来讲,它并不能被叫做⼀个字符集。

但是由于技术原因(下⾯会讲),这⼀系列字符集同时只能使⽤⼀个,所以把整个ANSI编码称作ANSI字符集来讨论也没有什么⼤问题。

汉字编码常用的字符集

汉字编码常用的字符集

汉字编码常用的字符集
1. GB2312,GB2312是中国国家标准简化汉字字符集,于1980年发布。

它包含了6763个常用汉字和682个非汉字字符,使用双字节编码,其中包括了简体中文的基本字符。

2. GBK,GBK是GB2312的扩展字符集,于1995年发布。

它兼容GB2312,并增加了近两万个汉字和符号。

GBK使用双字节编码,其中包括了简体中文的扩展字符。

3. GB18030,GB18030是中国国家标准的多字节字符集,于2000年发布。

它兼容GB2312和GBK,并增加了更多的汉字和字符,包括繁体中文和一些少数民族文字。

GB18030使用单字节、双字节和四字节编码。

4. Unicode,Unicode是国际标准字符集,旨在涵盖地球上所有的字符。

Unicode采用统一的编码方式,为每个字符分配唯一的编码值。

其中,汉字统一采用了CJK统一汉字扩展A(CJK Unified Ideographs Extension A)和CJK统一汉字扩展B(CJK Unified Ideographs Extension B)等多个扩展区。

5. UTF-8,UTF-8是一种可变长度的Unicode编码方式,它可以表示任意Unicode字符。

UTF-8使用1到4个字节来表示不同的字符,其中包括了汉字。

这些字符集在不同的环境下使用,常见的应用包括操作系统、编程语言、文本编辑器、网页浏览器等。

使用不同的字符集可以满足不同的需求,如支持不同语言的文字显示和输入。

字符集和字符编码(CharsetEncoding)

字符集和字符编码(CharsetEncoding)

字符集和字符编码(CharsetEncoding)——每个软件开发⼈员应该⽆条件掌握的知识!——Unicode伟⼤的创想!相信⼤家⼀定碰到过,打开某个⽹页,却显⽰⼀堆像乱码,如"бЇЯАзЪСЯ"、"�????????"?还记得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息头字段?这些就是接下来我们要探讨的。

⽬录:1.*础知识计算机中储存的信息都是⽤⼆进制数表⽰的;⽽我们在屏幕上看到的英⽂、汉字等字符是⼆进制数转换之后的结果。

通俗的说,按照何种规则将字符存储在计算机中,如'a'⽤什么表⽰,称为"编码";反之,将存储在计算机中的⼆进制数解析显⽰出来,称为"解码",如同密码学中的加密和解密。

在解码过程中,如果使⽤了错误的解码规则,则导致'a'解析成'b'或者乱码。

字符集(Charset):是⼀个系统⽀持的所有抽象字符的集合。

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

字符编码(Character Encoding):是⼀套法则,使⽤该法则能够对⾃然语⾔的字符的⼀个集合(如字母表或⾳节表),与其他东西的⼀个集合(如号码或电脉冲)进⾏配对。

即在符号集合与数字系统之间建⽴对应关系,它是信息处理的⼀项*本技术。

通常⼈们⽤符号集合(⼀般情况下就是⽂字)来表达信息。

⽽以计算机为*础的信息处理系统则是利⽤元件(硬件)不同状态的组合来存储和处理信息的。

元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

2.常⽤字符集和字符编码常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

关于charset的几种编码方式

关于charset的几种编码方式

关于charset的⼏种编码⽅式经常遇到charset=gb2312、charset=iso-8859-1、charset=utf-8这⼏种编码⽅式,它们有什么不同,看下⾯的图编码⽅式含义charset=iso-8859-1西欧的编码,英⽂编码charset=gb2312中⽂编码charset=utf-8世界通⽤语⾔编码charset=big5繁体中⽂编码charset=euc-kr韩⽂编码除此之外,还有很多其他的编码⽅式,其中charset=utf-8可以⽤到中⽂、韩⽂、⽇⽂等世界上所有语⾔编码上各个国家和地区制定的不同ANSI编码标准中,都只规定了⾃⼰语⾔需要的“字符”,⽐如汉字标准(GB2312)中没有规定韩⽂字符怎么存储。

制定的ANSI包含两层含义:字符集:使⽤哪些字符,也就是哪些汉字、字母和符号会被收⼊标准中。

编码:规定每个字符如何存储,即⽤⼏个字节以及哪些字节来存储在制定ANSI标准的时候,字符集和编码⼀般都是同时制定的。

“unicode”字符集包含了各种语⾔使⽤到的“字符”。

由此产⽣了很多“unicode”字符集编码的标准,主要分为下⾯三类。

ISO-8859-1最简单的编码规则,每⼀个字节直接作为⼀个unicode字符。

⽐如,[0xD6, 0xD0] 这两个字节,通过 iso-8859-1转化为字符串时,将直接得到 [0x00D6, 0x00D0] 两个 unicode 字符,即 “ÖД。

反之,将 unicode 字符串通过 iso-8859-1 转化为字节串时,只能正常转化 0~255 范围的字符。

GB2312、BIG5、Shift_JIS、ISO-8859-2把 unicode 字符串通过 ANSI 编码转化为“字节串”时,根据各⾃编码的规定,⼀个 unicode 字符可能转化成⼀个字节或多个字节。

反之,将unicode字节串转化成字符串时,也可能多个字节转化成⼀个字符。

在MySQL中如何进行数据转码和字符集转换

在MySQL中如何进行数据转码和字符集转换

在MySQL中如何进行数据转码和字符集转换一、引言随着全球化的发展,不同地区和国家之间的交流越来越频繁。

由于不同地区和国家使用不同的字符集和编码方式,因此在数据交换和处理过程中经常会出现字符集转换的需求。

在MySQL数据库中,如何进行数据转码和字符集转换是一个重要的问题。

本文将介绍MySQL中字符集和编码的概念,并提供了一些数据转码和字符集转换的实践方法。

二、字符集和编码1. 字符集字符集(Character Set)是一组字符的集合,字符可以是字母、数字、标点符号、符号等。

常见的字符集有ASCII、Unicode、UTF-8、GBK等。

2. 编码编码(Encoding)是将字符集中的字符编码成计算机可以识别的二进制数据的过程。

常见的编码方式有ASCII、UTF-8、UTF-16、GBK等。

三、MySQL中的字符集和编码设置1. 查看当前字符集和编码设置在MySQL中,可以通过以下命令查看当前字符集和编码设置:```show variables like 'character_set_database';show variables like 'collation_database';```其中,character_set_database表示数据库默认的字符集,collation_database表示数据库默认的排序规则。

2. 修改字符集和编码设置在MySQL中,可以通过以下命令修改字符集和编码设置:```alter database databasename character set charsetname;alter database databasename collate collationname;```其中,databasename表示数据库名称,charsetname表示要修改为的字符集,collationname表示要修改为的排序规则。

四、数据转码在MySQL中,数据转码是指将一个字符集中的数据转换成另一个字符集的过程。

mysql8的字符集和默认校对规则

mysql8的字符集和默认校对规则

mysql8的字符集和默认校对规则字符(Character)是计算机中字母、数字、符号的统称,一个字符可以是一个中文汉字、一个英文字母、一个阿拉伯数字、一个标点符号等。

计算机是以二进制的形式来存储数据的。

平时我们在显示器上看到的数字、英文、标点符号、汉字等字符都是二进制数转换之后的结果。

字符集(Character set)定义了字符和二进制的对应关系,为字符分配了唯一的编号。

常见的字符集有 ASCII、GBK、IOS-8859-1 等。

字符编码(Character encoding)也可以称为字集码,规定了如何将字符的编号存储到计算机中。

大部分字符集都只对应一种字符编码,例如:ASCII、IOS-8859-1、GB2312、GBK,都是既表示了字符集又表示了对应的字符编码。

所以一般情况下,可以将两者视为同义词。

Unicode 字符集除外,Unicode 有三种编码方案,即 UTF-8、UTF-16 和 UTF-32。

最为常用的是 UTF-8 编码。

校对规则(Collation)也可以称为排序规则,是指在同一个字符集内字符之间的比较规则。

字符集和校对规则是一对多的关系,每个字符集都有一个默认的校对规则。

字符集和校对规则相辅相成,相互依赖关联。

简单来说,字符集用来定义 MySQL 存储字符串的方式,校对规则用来定义 MySQL 比较字符串的方式。

想了解 ASCII、GB2312、GBK、Unicode 字符集的小伙伴,可点击以下链接阅读学习:ASCII编码,将英文存储到计算机GB2312编码和GBK编码,将中文存储到计算机Unicode字符集,将全世界的文字存储到计算机有些数据库并没有清晰的区分开字符集和校对规则。

例如,在 SQL Server 中创建数据库时,选择字符集就相当于选定了字符集和校对规则。

而在 MySQL 中,字符集和校对规则是区分开的,必须设置字符集和校对规则。

一般情况下,没有特殊需求,只设置其一即可。

Python的字符串和编码

Python的字符串和编码

Python的字符串和编码1. 字符编码 字符串也是⼀种数据类型,但是,字符串⽐较特殊的是还有⼀个编码问题。

因为计算机只能处理数字,如果要处理⽂本,就必须先把⽂本转换为数字才能处理。

最早的计算机在设计时采⽤8个⽐特(bit)作为⼀个字节(byte),所以,⼀个字节能表⽰的最⼤的整数就是255(⼆进制11111111=⼗进制255),如果要表⽰更⼤的整数,就必须⽤更多的字节。

⽐如两个字节可以表⽰的最⼤整数是65535,4个字节可以表⽰的最⼤整数是4294967295。

由于计算机是美国⼈发明的,因此,最早只有127个字符被编码到计算机⾥,也就是⼤⼩写英⽂字母、数字和⼀些符号,这个编码表被称为ASCII编码,⽐如⼤写字母A的编码是65,⼩写字母z的编码是122。

但是要处理中⽂显然⼀个字节是不够的,⾄少需要两个字节,⽽且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,⽤来把中⽂编进去。

你可以想得到的是,全世界有上百种语⾔,⽇本把⽇⽂编到Shift_JIS⾥,韩国把韩⽂编到Euc-kr⾥,各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语⾔混合的⽂本中,显⽰出来会有乱码。

因此,Unicode字符集应运⽽⽣。

Unicode把所有语⾔都统⼀到⼀套编码⾥,这样就不会再有乱码问题了。

Unicode标准也在不断发展,但最常⽤的是UCS-16编码,⽤两个字节表⽰⼀个字符(如果要⽤到⾮常偏僻的字符,就需要4个字节)。

现代操作系统和⼤多数编程语⾔都直接⽀持Unicode。

现在,捋⼀捋ASCII编码和Unicode编码的区别:ASCII编码是1个字节,⽽Unicode编码通常是2个字节。

字母A⽤ASCII编码是⼗进制的65,⼆进制的01000001; 字符0⽤ASCII编码是⼗进制的48,⼆进制的00110000,注意字符'0'和整数0是不同的; 汉字中已经超出了ASCII编码的范围,⽤Unicode编码是⼗进制的20013,⼆进制的0100111000101101。

记事本的编码问题

记事本的编码问题

记事本的编码问题记事本的编码问题记事本的编码问题,当文档中所有字符都在C0≤AA≤DF80≤BB≤BF这个范围的时候,notepad都无法确认文档的格式,没有自动按照UTF-8格式来"Display"。

"联通"就是C1 AA CD A8,刚好在上面的范围内,所以不能正常显示。

但是由于不够详细,笔者就这一问题又特地咨询了放飞技术网的高翅工程师,高工非常热心的给我们带来了更加详细的解释:在计算机中字符通常并不是保存为图像,每个字符都是使用一个编码来表示的,而每个字符究竟使用哪个编码代表,要取决于使用哪个字符集(charset)。

在最初的时候,Internet上只有一种字符集——ANSI的ASCII字符集,它使用7 bits来表示一个字符,总共表示128个字符,其中包括了英文字母、数字、标点符号等常用字符。

之后,又进行扩展,使用8 bits表示一个字符,可以表示256个字符,主要在原来的7 bits 字符集的基础上加入了一些特殊符号例如制表符。

后来,由于各国语言的加入,ASCII已经不能满足信息交流的需要,因此,为了能够表示其它国家的文字,各国在ASCII的基础上制定了自己的字符集,这些从ANSI标准派生的字符集被习惯的统称为ANSI 字符集,它们正式的名称应该是MBCS(Multi-Byte Chactacter System,即多字节字符系统)。

这些派生字符集的特点是以ASCII 127 bits为基础,兼容ASCII 127,他们使用大于128的编码作为一个Leading Byte,紧跟在Leading Byte后的第二(甚至第三)个字符与Leading Byte一起作为实际的编码。

这样的字符集有很多,我们常见的GB-2312就是其中之一。

例如在GB-2312字符集中,“连通”的编码为C1 AC CD A8,其中C1和CD就是Leading Byte。

前127个编码为标准ASCII保留,例如“0”的编码是30H(30H表示十六进制的30)。

一个字节是多少?

一个字节是多少?

⼀个字节是多少?字节(Byte):字节是通过信息(或在硬盘或内存中存储信息)的单位。

字节是计算机信息技术⽤于计量存储容量和传输容量的⼀种计量单位,1个字节等于8位⼆进制。

在ASCII码中,⼀个英⽂字母(不分⼤⼩写)占⼀个字节的空间,⼀个中⽂汉字占两个字节的空间。

符号:英⽂标点占⼀个字节,中⽂标点占两个字节。

举例:英⽂句号“.”占1个字节的⼤⼩,中⽂句号“。

”占2个字节的⼤⼩⼀个序列,在计算机中作为⼀个数字单元,⼀般为8位⼆进制数,如⼀个ASCII码就是⼀个字节,此类单位的换算为:1千吉字节(TB,Terabyte)=1024吉字节(2的40次⽅字节)(1TB=1024GB)1吉字节(GB,Gigabyte)=1024兆字节(2的30次⽅字节)(1GB=1024MB)1兆字节(MB,Megabyte)=1024千字节(2的20次⽅字节)(1MB=1024KB)1千字节(KB,Kilobyte)=1024字节(2的10次⽅字节)(1KB=1024B)1字节(Byte)= 8位(bit)注:TB是现在最⼤的存储量单位。

10TB⼤约等于⼀个⼈脑的存储量。

更⼤的单位,还有 PB(Petabyte,1PB=1024TB)、EB(Exabyte,1EB=1024PB)、ZB(Zettabyte,1ZB=1024EB)、YB(Yottabyte,1YB=1024ZB)……1.2 字符,字节,字符串理解编码的关键,是要把字符的概念和字节的概念理解准确。

这两个概念容易混淆,我们在此做⼀下区分:概念描述举例字符⼈们使⽤的记号,抽象意义上的⼀个符号。

'1', '中', 'a', '$', '¥', ……字节计算机中存储数据的单元,⼀个8位的⼆进制数,是⼀个很具体的存储空间。

0x01, 0x45, 0xFA, ……ANSI 字符串在内存中,如果“字符”是以ANSI编码形式存在的,⼀个字符可能使⽤⼀个字节或多个字节来表⽰,那么我们称这种字符串为 ANSI 字符串或者多字节字符串。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

——每个软件开发人员应该无条件掌握的知识!——Unicode伟大的创想!相信大家一定碰到过,打开某个网页,却显示一堆像乱码,如"бЇЯАзЪСЯ"、"�????????"?还记得HTTP中的Accept-Charset、Accept-Encoding、Accept-Language、Content-Encoding、Content-Language等消息头字段?这些就是接下来我们要探讨的。

目录:∙1.基础知识∙2.常用字符集和字符编码o2.1. ASCII字符集&编码o2.2. GBXXXX字符集&编码o2.3. BIG5字符集&编码∙3.伟大的创想Unicodeo3.1.UCS & UNICODEo3.2.UTF-32o3.3.UTF-16o3.4.UTF-8∙4.Accept-Charset/Accept-Encoding/Accept-Language/Content-Type/Content-Encoding/Content-Language∙参考文献&进一步阅读1.基础知识计算机中储存的信息都是用二进制数表示的;而我们在屏幕上看到的英文、汉字等字符是二进制数转换之后的结果。

通俗的说,按照何种规则将字符存储在计算机中,如'a'用什么表示,称为"编码";反之,将存储在计算机中的二进制数解析显示出来,称为"解码",如同密码学中的加密和解密。

在解码过程中,如果使用了错误的解码规则,则导致'a'解析成'b'或者乱码。

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

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

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

即在符号集合与数字系统之间建立对应关系,它是信息处理的一项基本技术。

通常人们用符号集合(一般情况下就是文字)来表达信息。

而以计算机为基础的信息处理系统则是利用元件(硬件)不同状态的组合来存储和处理信息的。

元件不同状态的组合能代表数字系统的数字,因此字符编码就是将符号转换为计算机可以接受的数字系统的数,称为数字代码。

2.常用字符集和字符编码常见字符集名称:ASCII字符集、GB2312字符集、BIG5字符集、GB18030字符集、Unicode字符集等。

计算机要准确的处理各种字符集文字,需要进行字符编码,以便计算机能够识别和存储各种文字。

2.1. ASCII字符集&编码ASCII(A merican S tandard C ode for I nformation I nterchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。

它主要用于显示现代英语,而其扩展版本EASCII则可以勉强显示其他西欧语言。

它是现今最通用的单字节编码系统(但是有被Unicode 追上的迹象),并等同于国际标准ISO/IEC 646。

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

ASCII编码:将ASCII字符集转换为计算机可以接受的数字系统的数的规则。

使用7位(bits)表示一个字符,共128字符;但是7位编码的字符集只能支持128个字符,为了表示更多的欧洲常用字符对ASCII进行了扩展,ASCII扩展字符集使用8位(bits)表示一个字符,共256字符。

ASCII字符集映射到数字编码规则如下图所示:图1 ASCII编码表图2 扩展ASCII编码表ASCII的最大缺点是只能显示26个基本拉丁字母、阿拉伯数目字和英式标点符号,因此只能用于显示现代美国英语(而且在处理英语当中的外来词如naïve、café、élite等等时,所有重音符号都不得不去掉,即使这样做会违反拼写规则)。

而EASCII虽然解决了部份西欧语言的显示问题,但对更多其他语言依然无能为力。

因此现在的苹果电脑已经抛弃ASCII而转用Unicode。

2.2. GBXXXX字符集&编码计算机发明之处及后面很长一段时间,只用应用于美国及西方一些发达国家,ASCII能够很好满足用户的需求。

但是当天朝也有了计算机之后,为了显示中文,必须设计一套编码规则用于将汉字转换为计算机可以接受的数字系统的数。

天朝专家把那些127号之后的奇异符号们(即EASCII)取消掉,规定:一个小于127的字符的意义与原来相同,但两个大于127的字符连在一起时,就表示一个汉字,前面的一个字节(他称之为高字节)从0xA1用到 0xF7,后面一个字节(低字节)从0xA1到0xFE,这样我们就可以组合出大约7000多个简体汉字了。

在这些编码里,还把数学符号、罗马希腊的字母、日文的假名们都编进去了,连在ASCII里本来就有的数字、标点、字母都统统重新编了两个字节长的编码,这就是常说的"全角"字符,而原来在127 号以下的那些就叫"半角"字符了。

上述编码规则就是GB2312。

GB2312或GB2312-80是中国国家标准简体中文字符集,全称《信息交换用汉字编码字符集·基本集》,又称GB0,由中国国家标准总局发布,1981年5月1日实施。

GB2312编码通行于中国大陆;新加坡等地也采用此编码。

中国大陆几乎所有的中文系统和国际化的软件都支持GB2312。

GB2312的出现,基本满足了汉字的计算机处理需要,它所收录的汉字已经覆盖中国大陆99.75%的使用频率。

对于人名、古汉语等方面出现的罕用字,GB2312不能处理,这导致了后来GBK及GB 18030汉字字符集的出现。

下图是GB2312编码的开始部分(由于其非常庞大,只列举开始部分,具体可查看GB2312简体中文编码表):图3 GB2312编码表的开始部分由于GB 2312-80只收录6763个汉字,有不少汉字,如部分在GB 2312-80推出以后才简化的汉字(如"啰"),部分人名用字(如中国前总理朱镕基的"镕"字),台湾及香港使用的繁体字,日语及朝鲜语汉字等,并未有收录在内。

于是厂商微软利用GB 2312-80未使用的编码空间,收录GB 13000.1-93全部字符制定了GBK编码。

根据微软资料,GBK是对GB2312-80的扩展,也就是CP936字码表 (Code Page 936)的扩展(之前CP936和GB 2312-80一模一样),最早实现于Windows 95简体中文版。

虽然GBK收录GB 13000.1-93的全部字符,但编码方式并不相同。

GBK自身并非国家标准,只是曾由国家技术监督局标准化司、电子工业部科技与质量监督司公布为"技术规范指导性文件"。

原始GB13000一直未被业界采用,后续国家标准GB18030技术上兼容GBK而非GB13000。

GB 18030,全称:国家标准GB 18030-2005《信息技术中文编码字符集》,是中华人民共和国现时最新的内码字集,是GB 18030-2000《信息技术信息交换用汉字编码字符集基本集的扩充》的修订版。

与GB 2312-1980完全兼容,与GBK基本兼容,支持GB 13000及Unicode的全部统一汉字,共收录汉字70244个。

GB 18030主要有以下特点:∙与UTF-8相同,采用多字节编码,每个字可以由1个、2个或4个字节组成。

∙编码空间庞大,最多可定义161万个字符。

∙支持中国国内少数民族的文字,不需要动用造字区。

∙汉字收录范围包含繁体汉字以及日韩汉字图4 GB18030编码总体结构本规格的初版使中华人民共和国信息产业部电子工业标准化研究所起草,由国家质量技术监督局于2000年3月17日发布。

现行版本为国家质量监督检验总局和中国国家标准化管理委员会于2005年11月8日发布,2006年5月1日实施。

此规格为在中国境内所有软件产品支持的强制规格。

2.3. BIG5字符集&编码Big5,又称为大五码或五大码,是使用繁体中文(正体中文)社区中最常用的电脑汉字字符集标准,共收录13,060个汉字。

中文码分为内码及交换码两类,Big5属中文内码,知名的中文交换码有CCCII、CNS11643。

Big5虽普及于台湾、香港与澳门等繁体中文通行区,但长期以来并非当地的国家标准,而只是业界标准。

倚天中文系统、Windows等主要系统的字符集都是以Big5为基准,但厂商又各自增加不同的造字与造字区,派生成多种不同版本。

2003年,Big5被收录到CNS11643中文标准交换码的附录当中,取得了较正式的地位。

这个最新版本被称为Big5-2003。

Big5码是一套双字节字符集,使用了双八码存储方法,以两个字节来安放一个字。

第一个字节称为"高位字节",第二个字节称为"低位字节"。

"高位字节"使用了0x81-0xFE,"低位字节"使用了0x40-0x7E,及0xA1-0xFE。

在Big5的分区中:0x8140-0xA0FE保留给用户自定义字符(造字区)0xA140-0xA3BF标点符号、希腊字母及特殊符号,包括在0xA259-0xA261,安放了九个计量用汉字:兙兛兞兝兡兣嗧瓩糎。

0xA3C0-0xA3FE保留。

此区没有开放作造字区用。

0xA440-0xC67E常用汉字,先按笔划再按部首排序。

0xC6A1-0xC8FE保留给用户自定义字符(造字区)0xC940-0xF9D5次常用汉字,亦是先按笔划再按部首排序。

0xF9D6-0xFEFE保留给用户自定义字符(造字区)Unicode字符集&UTF编码3.伟大的创想Unicode——不得不单独说Unicode像天朝一样,当计算机传到世界各个国家时,为了适合当地语言和字符,设计和实现类似GB232/GBK/GB18030/BIG5的编码方案。

这样各搞一套,在本地使用没有问题,一旦出现在网络中,由于不兼容,互相访问就出现了乱码现象。

为了解决这个问题,一个伟大的创想产生了——Unicode。

Unicode编码系统为表达任意语言的任意字符而设计。

它使用4 字节的数字来表达每个字母、符号,或者表意文字(ideograph)。

每个数字代表唯一的至少在某种语言中使用的符号。

(并不是所有的数字都用上了,但是总数已经超过了65535,所以2个字节的数字是不够用的。

相关文档
最新文档