圣经镇楼:
手持两把锟斤拷, 口中直呼烫烫烫

简介

想必平时大家没少遇到过乱码问题, 下面我简要介绍一下乱码出现的原因

首先在中国, 编码方式一般是用 GBK 比较多, 这个编码是由中国国家标准化委员会提出的. 它是对汉字进行编码的一种字符集标准, 旨在支持中文字符的表示和传输.

然而, 最近由于统一的需要, 世界各地都在推崇 Unicode 编码, 其中最著名的就是 UTF-8, 又称万国码. 因为这种编码可以兼容几乎世界上所有文字, 就不需要每个国家都独立一种编码方案了.

而在这种过渡时期, 由于GBK和UTF8是没有互相兼容的, 所以可能会出现因编码方式不同而导致文件或者程序输出乱码的情况.

下面介绍解决方法

解决方法

首先有个万能的治标不治本的解决方法, 就是在Windows的控制面板里的时区和语言选项, 把编码格式调为 GBK, 此时打开GBK也不会乱码, 打开UTF8的也大概率兼容. 如下图. 取消勾选Beta即可

img

但是这种方法会导致系统的默认编码为GBK, 以后保存的文件和软件也基本是GBK编码的, 不利于UTF8的推广.

因此下面介绍不修改系统编码

文件乱码

首先, 如果是文件的编码不同导致的乱码, 直接更改编码方式即可. 比如 Notepad++, 或者vscode, 就可以在打开文件时选择文件的编码方式, 也可以打开之后重新编码一遍.

程序乱码

此处分两种情况, 一种是别人的软件程序, 我们使用时乱码了. 另一种是我们自己写的程序输出乱码.

软件乱码
当使用软件乱码时, 比如用一些比较老的国产软件, 大概率是GBK编码的, 如果我们的电脑是UTF8编码, 那就会出现乱码情况.

此时我们就可以使用一款开源软件 Locale Emulator
按照指示安装这个软件之后就可以以不同的编码格式打开不同软件, 这对于很多中国老软件或者日本小*游都很有用

设置完成之后, 只需右键选择打开即可

img

程序输出乱码
如果是自己写的程序输出乱码, 可以在命令行执行chcp 65001 来临时更改编码, 改为UTF8. 或者chcp 936 改为临时的GBK编码.

但这都只是治标不治本.

最好在编译程序的时候能更改编码格式, 比如G++编译器, 可以如下命令

1
g++ -finput-charset=GBK -fexec-charset=UTF-8 main.cpp -o main.exe

这句命令就是指定输入的代码文件为GBK格式, 输出的格式为UTF8