Windows 下如何将标准输出设置为 UTF-8 编码
Windows 下如何将控制台的标准输出设置为 UTF-8 编码
C# 语言
C# 语言在简体中文版的 Windows 下默认使用 GBK 编码。 切换标准输入输出的字符编码只需要设置 Console 对象的输出字符编码即可。在代码最初处加上 Console.OutputEncoding = System.Text.Encoding.UTF8
。上例子:
1 | using System; |
编译成 ConsoleApp.exe,然后在命令行中执行 ConsoleApp.exe,可以看到,正常输出中文字,不会乱码。
然后执行:
1 | ConsoleApp.exe > a.txt |
把输出结果重定向到 a.txt 文件中,用编辑器打开 a.txt,可以在编辑器中看到文件编码为 UTF-8 。
C/C++ 语言
简体中文版的Windows 控制台输出的字符 CodePage 为 GBK。在需要输出 UTF-8 文本到标准输出之前,先调用 Windows API 进行设置,使用 SetConsoleOutputCP
这个 API 来先设置控制台输出的 CodePage 为 UTF-8。上例子:
1 | // u8test.cpp, 这个源代码要保存为 UTF-8 编码 |
SetConsoleCP
函数用于设置标准输入的字符编码 CodePageSetConsoleOutputCP
函数用于设置标准输出的字符编码 CodePage
用 mingw gcc 编译的命令:
1 | g++ -s -o u8test.exe u8test.cpp |
用 VC++ 编译则需要加上 -utf-8
命令参数,如果不加上 -utf-8
的话,编译器会把字符串的编码默认转换为 GBK。( -utf-8 命令行参数仅仅在 VC++ 2015版本以上才有效 )
1 | cl -MD -utf-8 u8test.cpp |
Go / Rust 语言
这些新兴语言没有历史包袱,标准库已经默认将标准输入输出的字符编码设置为 UTF-8 了,所以不需要过多关注这些,直接开干使用即可。