Win32 程序中文乱码问题

举报
福州司马懿 发表于 2022/11/25 14:13:09 2022/11/25
【摘要】 简介读取文件的文件编码格式 和 vs的字符集设置 很重要,读取到程序里的中文字符串需要做转换处理 Vistual Studio 字符集编码右击某个项目,选择属性,然后在配置属性处,选中高级,右边的“字符集”默认就是“使用Unicode字符集”VS支持两种字符集,分别是Unicode字符集多字节字符集 Unicode字符集 如果文件编码是gbk编码void gb2312ToUnicode(c...

简介

读取文件的文件编码格式vs的字符集设置 很重要,读取到程序里的中文字符串需要做转换处理

Vistual Studio 字符集编码

右击某个项目,选择属性,然后在配置属性处,选中高级,右边的“字符集”默认就是“使用Unicode字符集”

图片.png

VS支持两种字符集,分别是

  • Unicode字符集
  • 多字节字符集

图片.png

Unicode字符集

如果文件编码是gbk编码

void gb2312ToUnicode(const string& src, wstring& result)
{
	int n = MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, NULL, 0);
	result.resize(n);
	MultiByteToWideChar(CP_ACP, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());
}

如果文件编码是utf8编码

void utf8ToUnicode(const string& src, wstring& result)
{
	int n = MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, NULL, 0);
	result.resize(n);
	MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());
}

多字节字符集

如果文件编码是gbk或者ansi

不需要处理

如果文件编码是utf8

需要utf8ToUnicode

void utf8ToUnicode(const string& src, wstring& result)
{
	int n = MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, NULL, 0);
	result.resize(n);
	MultiByteToWideChar(CP_UTF8, 0, src.c_str(), -1, (LPWSTR)result.c_str(), result.length());
}

Vistual Studio 修改默认文件编码

VS2022安装完成后,在“文件”菜单下是不显示“高级保存选项”的,那如何设置,才能显示出来呢?下面是具体步骤。

点击“工具”–“自定义”选项

图片.png

转到“命令”选项卡,点击“菜单栏”,选择“文件”

图片.png

点击“添加”命令,类别选择“文件”,右侧选择“高级保存选项”

图片.png

然后Vistual Studio 的文件菜单里,就会多出一条“高级保存选项”了

图片.png

点开“高级保存选项”可以查看到文件的默认保存编码。设置后,所有文件都会按该编码进行保存

图片.png

图片.png

win10 设置 utf8 编码

如果还有乱码,尝试修改window的字符集

图片.png

图片.png

图片.png

图片.png

图片.png

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。