You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VS Code集成终端UTF-8输入异常问题求助

解决VS Code集成终端中MSVC程序fgets读取UTF-8输入异常的问题

问题根源

VS Code集成终端与独立PowerShell 7在标准输入的初始化逻辑上存在差异,即使编码设置为UTF-8(65001),MSVC运行时也可能无法正确读取输入缓冲区的内容,导致fgets返回空值。

解决方案

1. 强制设置标准输入为UTF-8文本模式

MSVC默认的输入模式可能不兼容VS Code集成终端的UTF-8输入处理,在代码中添加模式设置语句,强制将标准输入切换为UTF-8文本模式:

#include <locale.h> 
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>

int main(){
    char *charset = setlocale(LC_ALL, ".UTF-8"); 
    // 配置标准输入为UTF-8文本模式
    _setmode(_fileno(stdin), _O_U8TEXT);
    char buffer[64]; 
    puts("Enter something..."); 
    fgets(buffer, sizeof buffer, stdin); 
    printf("charset: %s\ninput: %s\n", charset, buffer); 
}

2. 调整VS Code集成终端的PowerShell 7启动参数

打开VS Code设置,搜索terminal.integrated.profiles.windows,修改PowerShell 7的配置,确保终端启动时完成编码初始化:

"terminal.integrated.profiles.windows": {
    "PowerShell 7": {
        "source": "PowerShell",
        "args": ["-Command", "chcp 65001"]
    }
}

3. 确认VS Code终端编码设置

检查terminal.integrated.encoding选项,确保其值设置为utf8(可通过设置搜索框直接查找该选项)。

补充说明

独立PowerShell 7启动时会完成完整的终端环境初始化,包括编码和输入模式的配置,因此程序能正常运行;而VS Code集成终端的启动流程相对简化,导致MSVC运行时无法正确识别输入状态,通过上述调整可以补全缺失的初始化步骤,解决输入读取异常问题。

内容的提问来源于stack exchange,提问作者kaan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 04:54:53