码迷,mamicode.com
首页 > Windows程序 > 详细

关于Windows记事本乱码问题

时间:2015-09-09 16:47:24      阅读:198      评论:0      收藏:0      [点我收藏+]

标签:

Windows早期是ANSI字符集的,单字节的,也就是说一个中文(双字节)文本,在Windows简体中文版显示的是中文,到Windows日文版显示的就不知道是什么东西了。

现在Windows都支持Unicode,但是如果是Unicode以外的文本时,怎么办?就是允许一个默认语言编码,就是当遇到一个字符串,不是unicode的时候,就用默认语言编码解释。

在区域和语言选项里可以改这个默认语言,在不同Windows语言版本里是不同的,在简体中文版里,是GBK,在繁体中文版里,是BIG5,在日文版里是Shift-JIS

而记事本的ANSI编码,就是这种默认编码,所以,一个中文文本,用ANSI编码保存,在中文版里编码是GBK模式保存的时候,到繁体中文版里,用BIG5读取,就全乱套了。

记事本也不甘心这样,所以它要支持Unicode,但是有一个问题,一段二进制编码,如何确定它是GBK还是BIG5还是UTF-16/UTF-8?记事本的做法是在TXT文件的最前面保存一个标签,

如果记事本打开一个TXT,发现这个标签,就说明是unicode。标签叫BOM,如果是0xFF 0xFE,是UTF16LE,如果是0xFE 0xFF则UTF16BE,如果是0xEF 0xBB 0xBF,则是UTF-8。

如果没有这三个东西,那么就是ANSI,使用操作系统的默认语言编码来解释。

Unicode的好处就是,不论你的TXT放到什么语言版本的Windows上,都能正常显示。而ANSI编码则不能。(UTF-8的好处是在网络环境下,比较节约流量,毕竟网络里英文的数据还是最多的)

关于Windows记事本乱码问题

标签:

原文地址:http://www.cnblogs.com/touhoujerry/p/4794967.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!