ANSI是什么编码?

原文:http://www.cnblogs.com/malecrab/p/5300486.html

用Notepad++创建一个文本文件text.txt,其默认编码格式为ANSI(乍看之下,还以为是ASCII呢),输入汉字居然不是乱码:

保存为test.txt,发送给你美国的同事Bob。他也用Notepad++,不幸的是,却发现你的文件内容是这样的:

也许你会认为:你用的是中文系统,能正常显示中文;他用的是英文系统,不能显示中文!

这么想,好像很有道理呢!

但是再细想一下:一个系统显示乱码,说明它不支持这种编码格式(或者解码方式不对)。难道英文系统不支持ANSI?难道ANSI是一种中文编码?

如果你身边有一个韩文系统,也装一个Notepad++,默认还是ANSI编码,你可以输入“한국어”,发现也能正常显示:

但是你要输入“汉字”可能就会发现是乱码了...

通过这个反例,就可以说明ANSI不是一种中文编码。那么,ANSI到底是什么编码?

用十六进制编辑器打开内容为“汉字”的test.txt文件: 

你会发现:其中baba和d7d6正好是“汉”和“字”两个字的GBK编码值。

同样,用十六进制编辑器打开内容为“한국어”的test.txt文件:

你会发现:其中c7d1、b1b9和beee正好是“한”、“국”和“어”三个字符的EUC-KR编码值。

由此可以看出:其实ANSI并不是某一种特定的字符编码,而是在不同的系统中,ANSI表示不同的编码。你的美国同事Bob的系统中ANSI编码其实是ASCII编码(ASCII编码不能表示汉字,所以汉字为乱码),而你的系统中(“汉字”正常显示)ANSI编码其实是GBK编码,而韩文系统中(“한국어”正常显示)ANSI编码其实是EUC-KR编码。

话说计算机是由美国搞出来的嘛,他们觉得一个字节(可以表示256个编码)表示英语世界里所有的字母、数字和常用特殊符号已经绰绰有余了(其实ASCII只用了前127个编码)。

后来欧洲人不干了,法国人说:我需要在小写字母加上变音符号(如:é),德国人说:我也要加几个字母(Ä ä、Ö ö、Ü ü、ß)。于是,欧洲人就将ASCII没用完的编码(128-255)为自己特有的符号编码(后来称之为“扩展字符集”)。

等到我们中国人开始使用计算机的时候,尼玛,256个编码哪够?我泱泱大中华,汉字起码也得N多万吧,就连小学生都得要求掌握两三千字。国标局最后拍板:一个字节不够,那我们就用多个字节来为汉字编码吧,但是,国情那么穷,字节那么贵,三个字节伤不起,那就用俩字节吧,先给常用的几千汉字编个码,等以后国家强盛了人民富裕了,咱再扩展呗---于是GB2312就产生了。

台湾同胞一看,尼玛,全是简体字,还让不让我们写繁体字的活了,于是台湾同胞也自己弄了个繁体字编码---大五码(Big-5)。同时,其它国家也在为自己的文字编码。最后,微软苦逼了:顾客就是上帝啊,你们的编码我都得满足啊.

这样吧,卖给美国国内的系统默认就用ASCII编码吧,卖给中国人的系统默认就用GBK编码吧,卖给韩国人的系统默认就用EUC-KR编码,但是为了避免你们误会我卖给你们的系统功能有差异,我就统一把你们的默认编码都显示成ANSI吧。---本故事纯属虚构,但“ANSI编码”确实只存在于Windows系统。

那么Windows系统是如何区分ANSI背后的真实编码的呢?

微软用一个叫“Windows code pages”(在命令行下执行chcp命令可以查看当前code page的值)的值来判断系统默认编码,比如:简体中文的code page值为936(它表示GBK编码,win95之前表示GB2312,详见:Microsoft Windows' Code Page 936),繁体中文的code page值为950(表示Big-5编码)。

我们能否通过修改Windows code pages的值来改变“ANSI编码”呢?

命令提示符下,我们可以通过chcp命令来修改当前终端的active code page,例如:
   (1) 执行:chcp 437,code page改为437,当前终端的默认编码就为ASCII编码了(汉字就成乱码了);
   (2) 执行:chcp 936,code page改为936,当前终端的默认编码就为GBK编码了(汉字又能正常显示了)。
  上面的操作只在当前终端起作用,并不会影响系统默认的“ANSI编码”。(更改命令行默认codepage参看:设置cmd的codepage的方法)。

Windows下code page是根据当前系统区域(locale)来设置的,要想修改系统默认的“ANSI编码”,我们可以通过修改系统区域来实现(“控制面板” =>“时钟、语言和区域”=>“区域和语言”=>“管理”=>“更改系统区域设置...”):


图中的系统locale为简体中文,意味着当前“ANSI编码”实际是GBK编码。当你把它改成Korean(Korea)时,“ANSI编码”实际是EUC-KR编码,“한국어”就能正常显示了;当你把它改成English(US)时,“ANSI编码”实际是ASCII编码,“汉字”和“한국어”都成乱码了。(改了之后需要重启系统的。。。)

说明:locale是国际化与本地化中重要的概念,本文不深入讲解该内容。

你上面说的都是windows的情形吧,Linux呢?

将前述内容为“汉字”的文件test.txt拷贝至Linux下,用Emacs打开:

也是乱码!原因也是locale的问题:


更改locale后再打开:

正常显示了。。。

   参考:

  • 知乎:

    Windows 记事本的 ANSI、Unicode、UTF-8 这三种编码模式有什么区别?

  • GBK编码

  • GB2312简体中文编码表

  • 韩国euc-kr码(即Wansung码)与Unicode码及原字形对照表

  • 维基百科:Code page 1386

  • MSDN:Code Page Identifiers

  • python CGI模块获取中文编码问题解决- 部分方案

  • http://www.360doc.com/content/15/0105/15/9934052_438371998.shtml

  • 阮一峰:字符编码笔记:ASCII,Unicode和UTF-8

    推荐阅读:

    专辑|Linux文章汇总

    专辑|程序人生

    专辑|C语言

嵌入式Linux

微信扫描二维码,关注我的公众号 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/467249.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Run ASMX Without IIS

http://msdn.microsoft.com/msdnmag/issues/04/12/ServiceStation/default.aspxExcellent, but how about on PDA? I need a SOAP Server running on PDA:( 转载于:https://www.cnblogs.com/swnuwangyun/archive/2006/11/16/562499.html

R语言数据分析过程

R语言数据分析前期&#xff1a;预处理过程&#xff0c;供自己查阅&#xff0c;欢迎大家指正。 利用R语言导入数据&#xff1a; taobao<-read.csv("taobao.csv",stringsAsFactors F) 我最常用到就是read.csv&#xff0c;其中stringsAsFactorsF很重要&#xff0c;不…

苏州,遇见NXP痞子衡

昨天的文&#xff0c;今天发--晚上打球照片&#xff0c;大家都是1.8的&#xff0c;结果拍出来变矮了因为公司项目问题&#xff0c;今天飞苏州&#xff0c;昨晚上就得到了命令&#xff0c;早上直接从家里开拔&#xff0c;这次去苏州提前跟痞子衡说了情况&#xff0c;原因是上次我…

计算机组成原理节拍分为几种,计算机组成原理习题答案第七章

计算机组成原理题答案,计算机组成原理,习题答案&#xff11; &#xff0e;控制器有哪几种控制方式&#xff1f; 各有何特点&#xff1f;解&#xff1a;控制器的控制方式可以分为&#xff13; 种&#xff1a;同步控制方式、异步控制方式和联合控制方式。同步控制方式的各项操作都…

Android中GC的触发时机和条件

本文分析基于Android R(11)源码Java对象的创建由Allocator负责&#xff0c;回收由Collector负责。从Android O开始&#xff0c;对于前台应用默认的GC Collector是CC(Concurrent Copying) Collector&#xff0c;与之相匹配的Allocator则是Region-based Bump Pointer Allocator(w…

java console 到文件

System.setOut(new PrintStream(new FileOutputStream("c:\\temp\\test1.txt"))); System.out.println(x);转载于:https://www.cnblogs.com/kakaisgood/p/7910620.html

计算机安全可靠替代工程,基于安全可靠软硬件的党政军OA系统的整系统优化方法与研究-计算机技术专业论文.docx...

万方数据万方数据摘要“十二五”期间&#xff0c;基于国家重大科技专项“核高基”前一阶段的基础软硬件产 品技术成果&#xff0c;以应用示范为牵引&#xff0c;全面验证、推广“十一五”“核高基”成果成为 工作重点和主题。由于国产关键基础软硬件产品不成熟以及缺乏系统性的…

使用.NET读取XML文件

介绍 本文中我将介绍在ASP.NET应用程序中如何读取XML文件&#xff0c;这是一个十分有用的技巧。使用这个技巧&#xff0c;我们能够定制我们的应用程序的配置文件&#xff0c;也可以读取那些保存在XML文件中的数据。 概论 下面的代码将使用XmlTextReader对象将磁盘文件中的数据读…

【华为出品】物联网全栈开发实战营第2期来啦!送海思开发板

物联网一直在改变我们生活的方方面面。可穿戴设备有助于监控我们的偏好、习惯和健康状况。智能家居设备可提高家居的舒适度、安全性和便利性。城市利用连接的数字设备收集的海量数据(数十亿个)来改善城市规划。制造商使用工业物联网设备来优化工厂车间的操作。据MarketsandMark…

2017年12月计算机一级c,2017年12月计算机二级C语言考试操作题冲刺卷(2)

三. 程序设计题3 [简答题]请编写函数fun&#xff0c;其功能是&#xff1a;移动一维数组中的内容&#xff0c;若数组中有n个整数&#xff0c;要求把下标从0&#xff5e;P(含P&#xff0c;P小于等于n-1)的数组元素平移到数组的最后。例如&#xff0c;一维数组中的原始内容为&…

6. Nginx + PHP + FastGCI安装

LNAMP Linux Nginx Apache Mysql PHP Nginx PHP&#xff08;fast CGI&#xff09; 可以理解为一个php加速的一个接口 Php-fpm 可以实现fastcgi协议需要的进程池&#xff0c;php-fpm实现的fastcgi进程叫php-cgi&#xff0c;所以php-fmp其实是他自身的fastcgi 或 php-cgi进程管理…

培训游戏(34个)

培训游戏(34个) 目 录 1. 造房子 2. 摔鸡蛋 3. 结网托物 4. 盲人移物 5. 搭纸牌 6. 九点游戏 7. 剪纸圈 8. Trust Fall 9. 商店打烊 10. 海上救生 11. Win As Much As Possible 12. 沙漠幸存者 13. 看FLY 14. 找方块 15. 中国人-美国人 16. 画画 17. 猜图形 …

给楠哥准备的入门单片机

---- 少儿编程前几天&#xff0c;珠海的三哥的老婆微信问我「我想给wending报名这个少儿编程课程&#xff0c;你帮我看看怎么样&#xff1f;」我看了下&#xff0c;除了价格还可以&#xff0c;其他都不怎么样&#xff0c;因为报名了这个课程&#xff0c;大家都知道你们家挺有钱…

计算机老师教师节祝福语,送给老师教师节祝福语

1、能使艰难之事变得容易的人是教育者。2、老师的教诲催我风雨兼程&#xff0c;我的祝福伴您昼夜耕耘。祝你教师节快乐&#xff01;3、您的辛劳是我们的动力&#xff0c;我们的成功是您的骄傲&#xff0c;然而我们会为您自豪&#xff01;&#xff01;4、老师就像航海的指标&…

JavaScript初阶(二)

编程形式的区别 编程语言按形式上分为两类&#xff0c;第一是面向过程&#xff0c;第二是面向对象。 面向过程&#xff1a;每一步我们该怎么做&#xff0c;如C语言 面向对象&#xff1a;包含面向过程&#xff0c;但更重要的是用什么方法处理&#xff0c;结构化更强。 显示类型转…

应届生昆山offer和上海户口offer要如何选择?

这两天还在苏州&#xff0c;没有感受苏州的什么好地方&#xff0c;天气有点微凉&#xff0c;有秋天的味道&#xff0c;同行的何总是一个很闷的人&#xff0c;我总想让他跟我说说故事&#xff0c;每次他都说「我是一个没有故事的男人」&#xff0c;是的&#xff0c;一个从毕业就…

html5--3.7 input元素(6)

html5--3.7 input元素(6) 学习要点 input元素及其属性input元素 用来设置表单中的内容项&#xff0c;比如输入内容的文本框&#xff0c;按钮等不仅可以布置在表单中&#xff0c;也可以在表单之外的元素使用input元素的属性 type属性&#xff1a;指定输入内容的类型&#xff0c;…

计算机or笔记本,笔记本or台式机?大学生第一个烦恼被它解决了

原标题&#xff1a;笔记本or台式机&#xff1f;大学生第一个烦恼被它解决了台式电脑还是笔记本&#xff1f;许多大学生在选择第一台大学电脑的时候都会面临这个问题。初秋的风带着点点凉意悄然走进了大学校园&#xff0c;开学季来临&#xff0c;又一批莘莘学子即将满怀青春的梦…

把编译时间加入到目标文件

原文&#xff1a;https://www.cnblogs.com/pingwen/p/8183728.html1、问题背景&#xff1a;如何保证发布出去的bin文件是最终测试通过的版本&#xff1f;一般的来讲&#xff0c;代码到了测试后期&#xff0c;master分支就不会频繁的提交了&#xff0c;并且提交也会更加谨慎。但…

大数据基础篇(一):联机分析处理(OLAP) 与 联机事务处理(OLTP)

联机事务处理(OLTP) OLTP也称实时系统(Real Time System)&#xff0c;支持事务快速响应和大并发&#xff0c;这类系统典型的有ATM机(Automated Teller Machine)系统、自动售票系统等&#xff0c;但有些银行转账并不是实时到账的。OLTP反映企业当前的运行状态&#xff0c;完成企…