`

字符编码的奥秘

 
阅读更多

字 符编码相信是每个程序员的噩梦,只要是有中文的地方,总是会遇到各种编码的问题,并且这种问题还非常难缠,尤其在linux上,因为上面很多软件都是针对 英语国家开发的,是不会考虑其他语种编码问题。在遇到编码的无数大坑之后,我决定仔细研究下编码问题,因为这就像一道坎一直横在你面前,每次到这里你都会 跌到,每次爬起来之后,你都若无其事,这样的人被称作战士,真正的战士。可惜是个力量战士,做为新时代的智力战士,当然不能在那跌到然后又在这继续跌到。

 

文件的存储方式:

     文件都有自己的存储格式,比如最常见的txt,cpp,h,c,xml ,png, rmvb各种格式,还有自定义格式。这些文件不论是什么格式,都是存储在计算机硬盘里的2进制格存储,对应不同文件格式,有不同的软件解析。这篇文章不谈 文件是如何存储的,只谈文件是如何解析的。

     

文本文件解析:

     文本文件对应于人类可以阅读的文本,如何从2进制转换为文本文件呢?起初由于计算机在美国发明,自然大家考虑的是英语如何表示,英语字母总共26个,加 上特殊字符,128个字符,7位既一个byte即可表示出来。这个就是大家所熟知的ascill编码。对应关系很简单,一个字符对应一一个byte。

     但很快发现,其他非英语国家的文字远远超过ascill码,这时候大家当然想统一字符编码,不同国家出了自己不同的编码方式,中国的gb2312就是自 己做出来的编码方式,这样下去每个国家都有自己的编码方式,来回转换太麻烦了。这时候出现了新的编码方式,unicode编码方式,想将编码统一,所以规 定了每个字符对应的unicode码。

     1、很多文件都是ascii编码,如果用unicode 太浪费。

     2、没有标志位说明该几个字节来解析为一个符号。

     这时候拯救世界的utf出现了,utf是unicode的一种实现,只不过更聪明了。utf16是占用两字节,或者四字节,utf32是占用四字节。utf8是很聪明的一种表示方式。

     1、对于单字节符号,字节第一位为0,后面7位表示字节编码。

     2、对于n字节符号,第一字节的前n位都设为1,第n+1位为0,其余位为编码位置。

对于不同的编码,在文本的最前方有不同的标志,unicode 通常有两位来表示分别是ff fe, 或者feff, fffe表示big-endian 编码feff表示litte-endian编码。utf8是efbbbf来开头的。可以看出来utf-8是自解释的,所以不用带这个标志文件,大多数程序 是可以识别的。但有些程序不能识别这个标志,比如php就会直接把这个标志当文本解析,不会忽略。相信很多遇到php输出文本解析乱码或者解析错误的同学 都遇到这样的问题。

   

如何解决问题:

    如果有vim那最好不过了,去掉命令:

    set encoding=utf-8

    set nobomb

    添加命令:

    set encoding=utf-8

    set bomb

 

   或者使用notepad++自带的功能

分享到:
评论

相关推荐

    字符编码的奥秘详解 字符编码的奥秘详解

    对于字符编码的认识与理解、防止与解决乱码问题 ,编码问题是信息处理的基本问题,但是由于历史和政治的问题,事实上存在着大量不统一的编码方式,造成在信息处理过程中的信息丢失,转换错误等问题,UCS 为问题的...

    编码的奥秘txt编码的奥秘txt编码的奥秘txt

    编码的奥秘txt 目 录 译者序 译者简介 第1章 电筒密谈 1 第2章 编码与组合 5 第3章 布莱叶盲文与二元编码 9 第4章 手电筒剖析 13 第5章 绕过拐弯的通信 19 第6章 电报机与继电器 25 第7章 十进制记数法 30 第8章 ...

    编码的奥秘

    编码的奥秘 电子书 本书用大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路以及存储器,微处理器的形成,组织及发展阐述了编码的实现。本书还涉及到计算机系统,编程语言的发展,甚至对计算机...

    编码的奥秘 (各种编码方法)

    本书定会带你去畅游计算机内部世界并和你共同去探索编码的奥秘。本书适合各种技术背景的人阅读,并可作为高等院校计算机或非计算机专业的教材使用。 目录 译者序 译者简介 第1章 电筒密谈 第2章 编码与组合 ...

    《编码的奥秘》电子书

    存储器组织 138第17章 自动操作 150第18章 从算盘到芯片 173第19章 两种典型的微处理器 188第20章 ASCII 码和字符映射 207第21章 总线连接 218第22章 操作系统 232第23章 定点数和浮点数 243第24章 高级语言和低级...

    编码的奥秘 1~25.pdf 高清电子版

    (2000年的老版)(china-p*b) ...第20章 ASCII 码和字符映射 207 第21章 总线连接 218 第22章 操作系统 232 第23章 定点数和浮点数 243 第24章 高级语言和低级语言 252 第25章 图形化革命 262

    编码的奥秘(计算机专业必读!)

    本书用大量的篇幅讲述了与计算机原理相关的各种编码方法...第20章 ASCII 码和字符映射 207 第21章 总线连接 218 第22章 操作系统 232 第23章 定点数和浮点数 243 第24章 高级语言和低级语言 252 第25章 图形化革命 262

    编码的奥秘(数字原理的形象讲解)

    本书用大量的篇幅讲述了与计算机原理相关的各种编码方法,并通过数字逻辑电路以及...第20章 ASCII 码和字符映射 第21章 总线连接 第22章 操作系统 第23章 定点数和浮点数 第24章 高级语言和低级语言 第25章 图形化革命

    编码的奥秘(完整版)

    经典 通俗易懂 初学者必看 目 录 译者序 ...第20章 ASCII 码和字符映射 207 第21章 总线连接 218 第22章 操作系统 232 第23章 定点数和浮点数 243 第24章 高级语言和低级语言 252 第25章 图形化革命 262

    编码的奥秘-隐匿在计算机背后的软硬件语言(中文版+英文版)高清带书签

    第一章 电筒密谈 第二章 编码与组合 ...第二十章 ASCII码和字符映射 第二十一章 总线连接 第二十二章 操作系统 第二十三章 定点数和浮点数 第二十四章 高级语言和低级语言 第二十五章 图形化革命

    编码的奥秘 密文 信息

    目录: 第1章 电筒密谈 1 第2章 编码与组合 5 ...第20章 ASCII 码和字符映射 207 第21章 总线连接 218 第22章 操作系统 232 第23章 定点数和浮点数 243 第24章 高级语言和低级语言 252 第25章 图形化革命 262

    2020最新版PHP学习路线图–Web前端重点知识

    黑马程序员PHP学习路线图中第一阶段的学习是web前端的学习:...字符编码的奥秘 HTML5新特性与常用标签 CSS CSS简介 CSS的引入方式 CSS基本选择器 CSS属性 盒子模型 CSS浮动 CSS3新特性与常用属性 CSS应用案例 JavaScri

    webserv:此项目使您可以编写自己的HTTP服务器。 您将遵循真实的HTTP RFC,并且将能够使用真实的浏览器对其进行测试。 HTTP是Internet上最常用的协议之一。 即使您不会在网站上工作,了解其奥秘也将是有用的

    它必须符合RFC 7230至7235(http 1.1)的条件,但您只需要实现以下标头接受字符集接受语言允许授权内容语言内容长度内容位置内容类型日期主持人最后修改地点推荐人重试后服务器传输编码用户代理WWW认证如果要执行...

    网络服务

    它必须符合RFC 7230至7235(http 1.1)的条件,但是您只需要实现以下标头接受字符集接受语言允许授权书内容语言内容长度内容位置内容类型日期主办最后修改地点推荐人重试后服务器传输编码用户代理WWW认证如果要执行...

Global site tag (gtag.js) - Google Analytics