编码转换

十分钟搞清字符集和字符编码

£可爱£侵袭症+ 提交于 2020-02-08 09:25:40
本博客已经迁移至: http://cenalulu.github.io/ 本篇博文已经迁移,阅读全文请点击: http://cenalulu.github.io/linux/character-encoding/ 本文将简述字符集,字符编码的概念。以及在遭遇乱码时的一些常用诊断技巧 背景:字符集和编码无疑是IT菜鸟甚至是各种大神的头痛问题。当遇到纷繁复杂的字符集,各种火星文和乱码时,问题的定位往往变得非常困难。本文就将会从原理方面对字符集和编码做个简单的科普介绍,同时也会介绍一些通用的乱码故障定位的方法以方便读者以后能够更从容的定位相关问题。在正式介绍之前,先做个小申明:如果你希望非常精确的理解各个名词的解释,那么可以查阅wikipedia。本文是博主通过自己理解消化后并转化成易懂浅显的表述后的介绍。 什么是字符集 在介绍字符集之前,我们先了解下为什么要有字符集。我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流。那么在这两者之间的转换规则就需要一个统一的标准,否则把我们的U盘查到老板的电脑上文档就乱码了,小伙伴QQ上传过来的文件在我们本地打开又乱码了。(PS:这里科普下 乱码 的英文native说法是 mojibake )。于是为了实现转换标准,各种字符集标准就出现了。简单的说字符集就规定了某个文字对应的二进制数字存放方式(编码

搞清字符集和字符编码

五迷三道 提交于 2020-02-08 07:08:44
本文将简述字符集,字符编码的概念。以及在遭遇乱码时的一些常用诊断技巧 背景:字符集和编码无疑是IT菜鸟甚至是各种大神的头痛问题。当遇到纷繁复杂的字符集,各种火星文和乱码时,问题的定位往往变得非常困难。本文就将会从原理方面对字符集和编码做个简单的科普介绍,同时也会介绍一些通用的乱码故障定位的方法以方便读者以后能够更从容的定位相关问题。在正式介绍之前,先做个小申明:如果你希望非常精确的理解各个名词的解释,那么可以查阅wikipedia。本文是博主通过自己理解消化后并转化成易懂浅显的表述后的介绍。 什么是字符集 在介绍字符集之前,我们先了解下为什么要有字符集。我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流。那么在这两者之间的转换规则就需要一个统一的标准,否则把我们的U盘插到老板的电脑上,文档就乱码了;小伙伴QQ上传过来的文件,在我们本地打开又乱码了。于是为了实现转换标准,各种字符集标准就出现了。简单的说字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系。 那么为什么会有那么多字符集标准呢?这个问题实际非常容易回答。问问自己为什么我们的插头拿到英国就不能用了呢?为什么显示器同时有DVI,VGA,HDMI,DP这么多接口呢?很多规范和标准在最初制定时并不会意识到这将会是以后全球普适的准则

字符集和字符编码

狂风中的少年 提交于 2020-02-08 06:04:03
http://os.51cto.com/art/201503/467929.htm 什么是字符集 在介绍字符集之前,我们先了解下为什么要有字符集。我们在计算机屏幕上看到的是实体化的文字,而在计算机存储介质中存放的实际是二进制的比特流。那 么在这两者之间的转换规则就需要一个统一的标准,否则把我们的U盘插到老板的电脑上,文档就乱码了;小伙伴QQ上传过来的文件,在我们本地打开又乱码了。 于是为了实现转换标准,各种字符集标准就出现了。简单的说字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解 码)的转换关系。 那么为什么会有那么多字符集标准呢?这个问题实际非常容易回答。问问自己为什么我们的插头拿到英国就不能用了呢?为什么显示器同时有 DVI,VGA,HDMI,DP这么多接口呢?很多规范和标准在最初制定时并不会意识到这将会是以后全球普适的准则,或者处于组织本身利益就想从本质上区 别于现有标准。于是,就产生了那么多具有相同效果但又不相互兼容的标准了。 说了那么多我们来看一个实际例子,下面就是屌这个字在各种编码下的十六进制和二进制编码结果,怎么样有没有一种很屌的感觉? 字符集 16进制编码 对应的二进制数据 UTF-8 0xE5B18C 1110 0101 1011 0001 1000 1100 UTF-16 0x5C4C 1011 1000 1001

字符集 ---转

走远了吗. 提交于 2020-02-08 05:50:15
字符集:简单的说字符集就规定了某个文字对应的二进制数字存放方式(编码)和某串二进制数值代表了哪个文字(解码)的转换关系;字符集只是一个规则集合的名字,就相当于 英语,汉语。一个字符集要正确编码转码一个字符需要三个关键元素:字库表,编码字符集,字符编码。 字符集 16进制编码 对应的二进制数据 UTF-8 0xE5B18C 1110 0101 1011 0001 1000 1100 UTF-16 0x5C4C 1011 1000 1001 1000 GBK 0x8CC5 1000 1100 1100 0101 字库表:相当于所有可读或者可显示字符的数据库,字库表决定了整个字符集能够展现标示所有字符的范围 编码字符集:即用一个编码值code point来标示一个字符在字库中的位置。 字符编码:将编码 字符集和实际存储数值之间的转换关系。 一般来说都会直接将code point的值作为编码后的值直接存储。 UTF-8和Unicode的关系就比较简单了。Unicode就是上文中提到的编码字符集,而UTF-8就是字符编码,即Unicode规则字库的一种实现形式。随着互联网的发展,对同一字库集的要求越来越迫切,Unicode标准也就自然而然的出现。它几乎涵盖了各个国家语言可能出现的符号和文字,并将为他们编号 如何识别乱码的本来想要表达的文字

ASCII和Unicode编码的区别

跟風遠走 提交于 2020-02-07 20:00:18
编码 大小 支持语言 ASCII 1个字节 英文 Unicode 2个字节(生僻字4个) 所有语言 UTF-8 1-6个字节,英文字母1个字节,汉字3个字节,生僻字4-6个字节 所有语言 具体解释:   最早只有127个字母被编译到计算机里,也就是大小写字母、数字和一些符号,这个编译表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。   但是要处理中文显然一个字节是不够的,至少需要2个字节,而且还不能和ASCII编码冲突,所以,中国制定了GB2312编码,用来把中文编进去。   你可以想得到的是,全世界有上百种语言,日本把日文编到Shift_JIS里,韩国把韩文编到Euc_kr里,各国有各国的标准,就会不可避免的出现冲突,结果就是,在多语言混合的文本中,显示出来就会有乱码。   因此,Unicode应运而生。Unicode把所有的语言都统一到一套编码里,这样就不会再有乱码问题了。   Unicode标准也在不断发展,但最常用的是用两个字节表示一个字符(偏僻字符需要4个字符)。现代操作系统和大多数编程语言都直接支持Unicode。   新的问题又出现了:如果统一成Unicode编码,乱码问题从此消失了。但是,如果你写的文本基本上全是英文的话,用Unicode编码比ASCII编码需要多一倍的存储空间,在存储和传输上就十分不划算。   所以,本着节约的精神

PHP JSON 数据编码和解码

核能气质少年 提交于 2020-02-07 15:14:52
JSON 的使用场景: 数据表一个字段需要记录多个信息,如记录关于用户的其他信息 数据传输,如:API接口返回值、Ajax中实现异步加载 配置文件,如 composer.json 包管理配置文件 在 PHP 中使用 JSON: JSON 使用最频繁的两个操作就是编码和解析数据,PHP 官方提供了以下 2 个函数实现这两个操作: json_encode() json_decode() Encoding and Decoding 编码用于将数据绑定到特定格式。需要此过程来保持数据一致性。解码是一个反向过程,它将编码的数据还原回其原始形式。 PHP JSON Encode 使用 json_encode 将 PHP 的一些数据类型转换为 JSON 格式,函数包含 3 个参数,分别为: 将要编码的数据 带有 JSON encode 常量的选项可以反映对编码行为的影响 编码的深度限制 PHP 中预定义的 JSON 常量 JSON_FORCE_OBJECT JSON_HEX_QUOT JSON_HEX_TAG JSON_HEX_AMP JSON_HEX_APOS JSON_INVALID_UTF8_IGNORE JSON_INVALID_UTF8_SUBSTITUTE JSON_NUMERIC_CHECK JSON_PARTIAL_OUTPUT_ON_ERROR JSON_PRESERVE

Java 转换流的简单理解

一世执手 提交于 2020-02-07 01:49:22
字符编码和字符集 字符编码 计算机中储存的信息都是用二进制数表示的,而我们在屏幕上看到的数字、英文、标点符号、汉字等字符是二进制数转换之后的结果。按照某种规则,将字符存储到计算机中,称为编码。反之,将存储在计算机中的二进制数按照某种规则解析显示出来,称为解码。比如说,按照A规则存储,同样按照A规则解析,那么就能显示正确的文本符号。反之,按照A规则存储,再按照B规则解析,就会导致乱码现象。 编码:字符 --> 字节 解码:字节 --> 字符 字符编码,是一套自然语言的字符与二进制数之间的对应规则。 字符集 字符集,也叫编码表,是一个系统支持的所有字符集合,包括国家文字、标点符号、图形符号、数字等。 计算机要准确的存储和识別各种字符集符号,需要进行字符编码,一套字符集必然至少有一套字符编码。常见字符集有ASCII字符集、GBK字符集、Unicode字符集等。 编码引出的问题 在IDEA中,使用FileReader读取项目中的文本文件。由于IDEA的设置,都是默认的UTF-8编码,所以没有任何问题。但是,当读取系统中创建的文本文件时,由于系统的默认是GBK编码,就会出现乱码。 那么该如何解决呢?我们可以使用InputStreamReader类、OutputStreamWriter类,指定编码来进行读写操作,这时候就不会出现乱码的情况了。 OutputStreamWriter类 java

Python2 和 Python3 编码问题

大兔子大兔子 提交于 2020-02-07 01:47:03
基本存储单元 位(bit, b):二进制数中的一个数位,可以是0或者1,是计算机中数据的最小单位。 字节(Byte,B):计算机中数据的基本单位,每8位组成一个字节。 1B = 8b 各种信息在计算机中存储、处理,至少需要一个字节的空间。 字节与字符 计算机存储的一切数据都是由一串 0 和 1 组成的字节序列构成。 字符就是一个符号,比如一个汉字、一个英文字母、一个标点都可以称为一个字符。 编码与解码 我们用编辑器打开的文本,看到的一个个字符,最终保存在磁盘上的时候都是以二进制字节序列形式存起来的。那么从字符到字节的转换过程就叫做编码(encode),反过来叫做解码(decode),两者是一个可逆的过程。编码是为了存储传输,解码是为了方便显示阅读。 编码规则 编码是人们定义的一种规则,使字符可以根据该规则,转换为对应的字节,方便存储和传输,也可以使字节转化成对应的字符用于显示、阅读。 例如,按照 ASCII 编码进行转换,字符 A 对应的字节为 0100 0001,占用 1 个字节的大小,一个字节也就是8位,可以表示 0 - 255,对于英文来讲 255 个字符已经足够显示所有的英文字符了,所以 ASCII(每个 字符占用一个字节) 编码是美国的标准编码 但是 ASCII 处理中文明显是不够的,中文不止 255 个汉字,所以中国制定了 GB2312 编码,用两个字节表示一个汉字

Python之路 - Day1 - Python基础1

佐手、 提交于 2020-02-07 00:37:45
本节内容 Python介绍 发展史 Python 2 or 3? 安装 Hello World程序 变量 用户输入 模块初识 .pyc是什么 数据类型初识 数据运算 表达式if ...else语句 表达式for 循环 break and continue 表达式while 循环 作业需求 一、 Python介绍 Python的创始人为吉多·范·罗苏姆(Guido van Rossum)。1989年的圣诞节期间,吉多·范·罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言的一种继承。 最新的TIOBE排行榜,Python占据第三,仅次于Java和C。 Python崇尚优美、清晰、简单,是一个优秀并被广泛使用的语言。 由上图可见,Python整体呈上升趋势,反映出Python应用越来越广泛并且也逐渐得到业内的认可!!! Python可以应用于众多领域,如:数据分析、组件集成、网络服务、图像处理、数值计算和科学计算等众多领域。目前业内几乎所有大中型互联网企业都在使用Python,如:Youtube、Dropbox、BT、Quora(美国知乎)、豆瓣、知乎、Google、Yahoo!、Facebook、NASA、百度、腾讯、汽车之家、美团等。 目前Python主要应用领域: 云计算: 云计算最火的语言, 典型应用OpenStack WEB开发:

GOF23种设计模式(Design Pattern)总结

大兔子大兔子 提交于 2020-02-06 01:26:43
比较 设计模式 常用程度 适用层次 引入时机 结构复杂度 Abstract Factory 比较常用 应用级 设计时 比较复杂 Builder 一般 代码级 编码时 一般 Factory Method 很常用 代码级 编码时 简单 Prototype 不太常用 应用级 编码时、重构时 比较简单 Singleton 很常用 代码级、应用级 设计时、编码时 简单 Adapter 一般 代码级 重构时 一般 Bridge 一般 代码级 设计时、编码时 一般 Composite 比较常用 代码级 编码时、重构时 比较复杂 Decorator 一般 代码级 重构时 比较复杂 Facade 很常用 应用级、构架级 设计时、编码时 简单 Flyweight 不太常用 代码级、应用级 设计时 一般 Proxy 比较常用 应用级、构架级 设计时、编码时 简单 Chain of Resp. 不太常用 应用级、构架级 设计时、编码时 比较复杂 Command 比较常用 应用级 设计时、编码时 比较简单 Interpreter 不太常用 应用级 设计时 比较复杂 Iterator 一般 代码级、应用级 编码时、重构时 比较简单 Mediator 一般 应用级、构架级 编码时、重构时 一般 Memento 一般 代码级 编码时 比较简单 Observer 比较常用 应用级、构架级 设计时、编码时 比较简单