VS中文乱码解决方案(不改高级保存选项)QT+msvc也可参考

问题描述

	# 要看结论直接拖到最后吧
	
	1.环境
		vs2019 win10电脑
	2.描述
		在VS上使用c++给win10的注册表写入带中文的字符串时,意外发现中文乱码。
		代码页是utf-8无bom版,然后百度说注册表是识别ascii码编码的,然后代码页采用utf-8,
		所以会乱码。
		我尝试用代码把中文从unicode转成muti多字节,在调试时发现为转之前调试器里的内容就是乱码的。
		转换后还是乱码的,写到注册表也是乱码的。

解决过程

	1.一开始我以为是代码页不是带bom的utf-8导致的,然后百度各种方法,改高级保存选项啥的,都不行。
		而且高级保存选项改了之后,再次打开cpp文件,依旧会回到最初的格式,此方法不管用。
	2.偶然想起之前搞QT的时候,用msvc编译项目,也会遇到无论如何都乱码的情况。
	后来在某个地方百度到,vs的msvc默认的编译方式就不是utf-8的。
	所以我开始怀疑是不是因为不带bom导致vs将代码识别为非utf-8,采用默认的方式进行了编译。
	3.找到QT的cmake关于如何msvc默认utf-8的编码方式的代码
		add_compile_options("$<$<C_COMPILER_ID:MSVC>:/utf-8>")
        add_compile_options("$<$<CXX_COMPILER_ID:MSVC>:/utf-8>")
    所以解决这个问题的关键是: "/utf-8"
    4.找到VS项目相关的编译选项,添加一个 /utf-8即可。
    (没有进行unicode转muti代码也成功的在注册表显示不乱码中文)

结论

	右键项目 ----》 属性----》c/c++ -----》 命令行 ----》 其它选项(D) ----> 写入 /utf-8 再保存即可

在这里插入图片描述

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值