Microsoft Office Excel 中出现乱码,使用Notepad++ 修改文档编码格式 UTF-8 转化为 GB2312
因为:Excel的实际编码行为,依赖于系统的语言版本、用户设置以及文件的保存选项。
知识1:不同的操作系统,拥有不同的默认编码值(ANSI Code Page)
Windows注册表中的ACP的值(ANSI Code Page)HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage。
知识2:Windows系统是如何区分ANSI背后的真实编码的呢?
微软用一个叫“Windows code pages”(在cmd命令行下执行chcp命令可以查看当前code page的值)的值来判断系统默认编码,比如:
简体中文的code page值为936(表示GB2312),繁体中文的code page值为950(表示Big-5编码)。
chcp 是 "change code page" 的缩写,用于显示或设置控制台窗口使用的字符编码的命令。
知识3:我们能否通过修改Windows code pages的值来改变“ANSI编码”呢?
临时修改:
命令提示符下,我们可以通过chcp命令来修改当前终端的active code page,例如:
(1) 执行:chcp 1252,code page 改为 1252,
Windows-1252是一种扩展的ASCII字符集,主要适用于西欧语言,包括英语。它是IBM PC兼容机上DOS和Windows操作系统中ANSI代码页的常见实现,用于替代ISO 8859-1(Latin-1)字符集。(汉字就成乱码了);
(2) 执行:chcp 936,code page 改为 936。
上面的操作只在当前终端起作用,并不会影响系统默认的“ANSI编码”。当我们进入cmd窗口后,直接输入“chcp 1252”回车后,只会临时修改当前窗口的活动代码页,当再次进入后又会显示之前的页码页。