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

Visual Studio(C++)中切换UTF-16编码及控制台输出UTF-16字符咨询

Visual Studio中C++项目编码切换与UTF-16字符输出方案

一、能否将项目编码从UTF-8切换为UTF-16?

完全可以。Visual Studio允许调整源文件的保存编码,以及编译阶段使用的字符集参数,以此实现从UTF-8到UTF-16的切换。

二、切换项目编码到UTF-16的具体操作

  • 单个源文件编码调整:右键目标.cpp/.h文件 → 选择「高级保存选项」→ 在「编码」下拉列表中选「Unicode (UTF-16 带签名) - 代码页 1200」或「Unicode (UTF-16 无签名) - 代码页 1201」,保存生效。
  • 项目默认编码设置:顶部菜单「工具」→「选项」→ 展开「文本编辑器」→「所有语言」→「文件」→ 在「编码」下拉框中选定目标UTF-16选项,点击确定后,后续新建的源文件会默认使用该编码。
  • 编译字符集配置:右键项目 →「属性」→「配置属性」→「常规」→ 找到「字符集」选项,选择「使用Unicode字符集」。这一步会让编译器自动定义_UNICODE和UNICODE宏,适配UTF-16相关的Windows API与标准库行为。

三、无需切换编码的UTF-16字符输出方案

如果不想改动项目编码,也能直接输出目标字符,两种常用方法如下:

方法1:使用std::wcout配合控制台编码设置

#include <iostream>
#include <windows.h>

int main() {
    // 将控制台输出编码设置为UTF-16
    SetConsoleOutputCP(CP_UTF16);
    // 直接输出宽字符常量(前缀L表示UTF-16编码)
    std::wcout << L"ąėųž" << std::endl;
    return 0;
}

方法2:UTF-16转UTF-8后用std::cout输出

#include <iostream>
#include <string>
#include <windows.h>

int main() {
    // 设置控制台输出为UTF-8
    SetConsoleOutputCP(CP_UTF8);
    
    std::wstring utf16_str = L"ąėųž";
    // 计算转换后的UTF-8字符串长度
    int utf8_buf_size = WideCharToMultiByte(CP_UTF8, 0, utf16_str.c_str(), -1, nullptr, 0, nullptr, nullptr);
    std::string utf8_str(utf8_buf_size, 0);
    // 执行UTF-16到UTF-8的转换
    WideCharToMultiByte(CP_UTF8, 0, utf16_str.c_str(), -1, utf8_str.data(), utf8_buf_size, nullptr, nullptr);
    
    std::cout << utf8_str << std::endl;
    return 0;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 23:35:20