VS Code 中的默认输出文件存储在 UTF 16 LE 中,而默认设置为 UTF-8
Default Output File in VS Code being stored in UTF 16 LE whereas default is set to UTF-8
我正在 windows 10 系统上工作并使用 VS Code。
VS Code -v : 1.48.2
gcc version : gcc (MinGW.org GCC-8.2.0-5) 8.2.0
我正在使用“gcc program.c -o a
”(program.c
是 C 文件的名称)编译一个 c 程序。
在终端中输入可执行文件名后,我将 C 文件的输出存储为:
./a > outputFile
1
2
4
6
7
第二行到第六行的数字是输入,outputFile 是我打算存储输出的新文件,否则将显示在 VS Code 终端本身。
我的问题是输出以 UTF-16 LE 格式存储,而我在 VS 代码中的默认编码设置为 UTF-8。
这会导致 git diff
命令将两个文件识别为不同的:
git diff outputFile expectedOutput
留言:
binary files a/outputFile b/expectedOutput differ
鉴于:
fc.exe outputFile expectedOutput
留言:
Resync Failed.Files are too different.
我需要手动将 outputFile 的编码更改为 UTF-8,之后命令会识别出相同的文件。
有没有办法自动将输出存储为 UTF-8 格式?
可重现示例:(主要编辑)
#include <stdio.h>
void main()
{
printf("1 2 3 4\n");
}//this is a test program named test.c
如果 Bernard 指出的 VSCode 终端默认为 Powershell 并且以下命令序列为 运行:
gcc test.c
./a > out1.txt
输出文件包含 UTF-16LE 格式的输出,可以通过在记事本中打开文本文件并尝试另存为来查看。
如果将终端更改为 cmd 和 运行s 以下命令输出文件以 UTF-8 格式存储输出:
gcc test.c
a.exe > out2.txt
如果选择 git bash 终端并执行以下命令,则会发生同样的情况,输出存储在 UTF-8 中:
gcc test.c
./a > out3.txt
out1.txt 包含 UTF-16LE 格式的输出,out2.txt、out3.txt 包含 UTF-8 格式的输出。
现在我可以更改默认终端并摆脱这个问题。在 Powershell 中修复此问题的方法可能很有用,尽管按照 Bernard 的建议通过 更改默认终端 .
找到了解决方案
它似乎与 Windows PowerShell 有关,Windows 上的 VSCode 默认使用 PowerShell 终端。
目前尚不清楚此问题的根本原因是什么,但有一个简单的解决方法——只需将 VSCode 终端更改为标准 Windows 终端而不是 PowerShell:
我正在 windows 10 系统上工作并使用 VS Code。
VS Code -v : 1.48.2
gcc version : gcc (MinGW.org GCC-8.2.0-5) 8.2.0
我正在使用“gcc program.c -o a
”(program.c
是 C 文件的名称)编译一个 c 程序。
在终端中输入可执行文件名后,我将 C 文件的输出存储为:
./a > outputFile
1
2
4
6
7
第二行到第六行的数字是输入,outputFile 是我打算存储输出的新文件,否则将显示在 VS Code 终端本身。
我的问题是输出以 UTF-16 LE 格式存储,而我在 VS 代码中的默认编码设置为 UTF-8。
这会导致 git diff
命令将两个文件识别为不同的:
git diff outputFile expectedOutput
留言:
binary files a/outputFile b/expectedOutput differ
鉴于:
fc.exe outputFile expectedOutput
留言:
Resync Failed.Files are too different.
我需要手动将 outputFile 的编码更改为 UTF-8,之后命令会识别出相同的文件。
有没有办法自动将输出存储为 UTF-8 格式?
可重现示例:(主要编辑)
#include <stdio.h>
void main()
{
printf("1 2 3 4\n");
}//this is a test program named test.c
如果 Bernard 指出的 VSCode 终端默认为 Powershell 并且以下命令序列为 运行:
gcc test.c
./a > out1.txt
输出文件包含 UTF-16LE 格式的输出,可以通过在记事本中打开文本文件并尝试另存为来查看。
如果将终端更改为 cmd 和 运行s 以下命令输出文件以 UTF-8 格式存储输出:
gcc test.c
a.exe > out2.txt
如果选择 git bash 终端并执行以下命令,则会发生同样的情况,输出存储在 UTF-8 中:
gcc test.c
./a > out3.txt
out1.txt 包含 UTF-16LE 格式的输出,out2.txt、out3.txt 包含 UTF-8 格式的输出。 现在我可以更改默认终端并摆脱这个问题。在 Powershell 中修复此问题的方法可能很有用,尽管按照 Bernard 的建议通过 更改默认终端 .
找到了解决方案它似乎与 Windows PowerShell 有关,Windows 上的 VSCode 默认使用 PowerShell 终端。
目前尚不清楚此问题的根本原因是什么,但有一个简单的解决方法——只需将 VSCode 终端更改为标准 Windows 终端而不是 PowerShell: