遇到的问题

由于以前做arduino程序都是在基于Linux的deepin操作系统下进行,对utf-8的编码支持比较好,没有出现过乱码的问题,最近由于些许原因换成了win7操作系统,在配置完arduino和vscode后发现在vscode中编译arduino程序,输出框会乱码,在网上找了很久没有有效的解决方案,这里记录一下。

解决方案1

此方案未经测试,换回arduino1.8及以前的版本即可。

解决方案2

这个方案就是我采用的方法,找到vscode的arduino拓展的安装目录,找到util.js这个文件,以我电脑上的为例:

C:\Users\Administrator\.vscode\extensions\vsciot-vscode.vscode-arduino-0.2.29\out\src\common\util.js

找到215到225左右的代码,找到如下的代码:

        if (os.platform() === "win32") {
            try {
                const chcp = childProcess.execSync("chcp.com");
                codepage = chcp.toString().split(":").pop().trim();
            }
            catch (error) {
                outputChannel_1.arduinoChannel.warning(`Defaulting to code page 850 because chcp.com failed.\
                \rEnsure your path includes %SystemRoot%\\system32\r${error.message}`);
                codepage = "850";
            }
        }

对代码进行多行注释:

        /**
        if (os.platform() === "win32") {
            try {
                const chcp = childProcess.execSync("chcp.com");
                codepage = chcp.toString().split(":").pop().trim();
            }
            catch (error) {
                outputChannel_1.arduinoChannel.warning(`Defaulting to code page 850 because chcp.com failed.\
                \rEnsure your path includes %SystemRoot%\\system32\r${error.message}`);
                codepage = "850";
            }
        }
        **/

保存文件,重启vscode,此时编译的输出信息,中文不再乱码。