Win 10 1809更新 解决控制台字符乱码的方法

发布于 2018-12-19  4.14k 次阅读


今年的两个Win 10更新一个比一个垃圾。上半年的1803更新毛病一堆,恶评不断。不过还好我的电脑上跑了那么长的1803更新,并没有出什么太大的毛病。没出什么毛病那就算了,坐等微软在下个更新中把bug修复就是了。

几个月后,微软终于推送了下半年的1809更新。和这个更新相比,1803更新里面的那堆bug根本算不了什么……

更新推送了没几天,就有用户反映,更新之后users文件夹里面的文件都没了。由于这个问题挺严重的,微软就暂时撤去了1809的推送和更新。

前不久听说微软把1809更新的那个用户文件丢失bug给修复了,就决定来用用新版本。更新完后用了用感觉新版本似乎没什么问题,就把C盘里面的Windows.Old文件夹删了,从此告辞1803。

然而用上1809更新的第二天我就体验到了一个bug——控制台中的字符有时会乱码。

1.bug现场

我们来用C++写个小程序看看控制台乱码的现象。

#include "iostream"
#include "cstdio"
using namespace std;
int main()
{
    printf("乱码TAT!999\n");
    printf(" 乱码TAT!666\n");
    std::cout<<"乱码TAT!333"<<std::endl;
    std::cout<<" 乱码TAT!000"<<std::endl;
    return 0;
}

用CLion编译运行上面的程序,控制台上的运行结果是这样的:

Win 10 1809更新 解决控制台字符乱码的方法
好像只有在用cout来输出内容,并且输出的第一个字符不能是中文,才不会显示乱码。

顺带一提,换个IDE(例如VS和Dev-CPP)编译运行这个程序,运行结果一样。

所以可以确定控制台字符乱码就是1809更新的bug……(╯‵□′)╯︵┻━┻

2.解决方法

既然微软官方一时半会儿不会来修复这个bug,那只能自己来想想办法解决咯。

2.1.回退1803版本

如果你实在受不了目前还不怎么稳定的1809,并且没有删掉C盘里面的Windows.Old文件夹,那就干脆回退到1803版本吧。

回退版本的操作很简单。首先按下Win+I组合键打开Windows设置窗口,依次点击“更新和安全”->“恢复”->“回退到Windows 10的上一个版本”一栏的“开始”,即可进行版本回退。

残念的是我早就把那个文件夹给删了。回退,还是别想了。_(:з)∠)_)

2.2.修改控制台属性

就算不回退版本或者重装系统,还是有办法解决乱码问题的。既然升级1809之后控制台出了问题,那就用旧版的控制台好了。

首先按下Win+R组合键打开运行窗口,输入“cmd”并回车以启动命令提示符。在命令提示符上端的窗口栏处点击鼠标右键,在菜单中点击“属性”。

Win 10 1809更新 解决控制台字符乱码的方法

接着在弹出的属性设置窗口中勾选上“使用旧版控制台”选项,勾选完毕之后点击确定保存。

Win 10 1809更新 解决控制台字符乱码的方法

现在再来运行一遍程序,输出结果总算正常了。

Win 10 1809更新 解决控制台字符乱码的方法

3.个人吐槽

微软今年的表现真的不咋样啊。发布的两次大更新毛病一次比一次多,有时真的忍不住想强行把系统更新给关了。

目前为止除了这个控制台字符乱码问题之外,我暂时没有遇到其它的1809更新的bug。只求不要过个几天又遇到新的bug……

还是那句老话,Arch Linux滚动更新会滚挂,Windows版本更新也会更出bug。谨慎更新,不然更出了问题就得烦个半天。