Win32 程序中文乱码问题
【摘要】 简介读取文件的文件编码格式 和 vs的字符集设置 很重要,读取到程序里的中文字符串需要做转换处理 Vistual Studio 字符集编码右击某个项目,选择属性,然后在配置属性处,选中高级,右边的“字符集”默认就是“使用Unicode字符集”VS支持两种字符集,分别是Unicode字符集多字节字符集 Unicode字符集 如果文件编码是gbk编码void gb2312ToUnicode(c...
简介
读取文件的文件编码格式 和 vs的字符集设置 很重要,读取到程序里的中文字符串需要做转换处理
Vistual Studio 字符集编码
右击某个项目,选择属性,然后在配置属性处,选中高级,右边的“字符集”默认就是“使用Unicode字符集”
VS支持两种字符集,分别是
- Unicode字符集
- 多字节字符集
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安装完成后,在“文件”菜单下是不显示“高级保存选项”的,那如何设置,才能显示出来呢?下面是具体步骤。
点击“工具”–“自定义”选项
转到“命令”选项卡,点击“菜单栏”,选择“文件”
点击“添加”命令,类别选择“文件”,右侧选择“高级保存选项”
然后Vistual Studio 的文件菜单里,就会多出一条“高级保存选项”了
点开“高级保存选项”可以查看到文件的默认保存编码。设置后,所有文件都会按该编码进行保存
win10 设置 utf8 编码
如果还有乱码,尝试修改window的字符集
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)