Visual Studio 2017 UTF-8 无 BOM 一站式解决办法
问题背景:最近捡起c++,使用vs 2017平台。因为以前的编程习惯,喜欢使用utf-8 无 bom 的编码格式,好让自己的代码全球通用。但是vs 2017 对这个问题不是很友善。但最终找到了解决办法。
问题标签:
utf-8 无 bom 乱码;utf-8 无 bom "常量中有换行符"错误提示;window cmd utf-8 无 bom 显示乱码;
utf-8 without bom garbled; utf-8 without bom "line breaks in constants" error message; window cmd utf-8 without bom shows garbled characters;
问题解决:
一:解决自己源码的编码格式
方法a(推荐):工具->扩展和更新->联机->搜索 forceutf8 选择no bom 的那一个。 在你保存文件的时候,这个插件会将文件自动保存为uft8 无 bom。
方案b:文件-> 另存为 ->编码保存 选择 uft-8 无签名
方案c:高级保存选项(默认是隐藏的,可以调出来。方法自行百度或googl...),界面如下
二:设定编译器 在编译 链接 时的编码格式,如果不设置,使用char数组保存字符时,会出现不可理解的错误提示 “常量中有换行符”或等等等问题
(1)在你的解决方案创建完成并打开之后 选定此方案。然后 项目->属性->(最好选择所有配置 所有平台)配置属性->常规->字符集->使用多字节字符集
注意:我自己使用中这个配置感觉并没有效果,但是为了保险起见,还是选择上吧。下面一个步骤比较重要。
(2)在你创建c++的源文件后,才会出现c/c++配置栏。选定解决方案,参考上一步 项目->属性->c/c++->命令行->输入/utf-8并确定。
这一步的解释,可以参考官方文档(推荐使用英文阅读):https://docs.microsoft.com/zh-cn/cpp/build/reference/utf-8-set-source-and-executable-character-sets-to-utf-8?view=vs-2017
三:设置window控制台(又名cmd或命令行窗口)为utf-8格式,解决显示界面的编码问题
在自己的源代码 加入 system("chcp 65001");如下:
#include <iostream> #include <string> using namespace std; int main() { system("chcp 65001"); char x[] = "的"; int i = x[0]; int j = x[1]; int k = x[2]; cout << x << endl; cout << hex << i << endl; cout << hex << j << endl; cout << hex << k << endl; string str_out_1 = "你的名字?"; string str_out_2 = "whats your name"; cout << str_out_1 << endl << str_out_2 << endl; system("pause"); }
结果:
错误的结果(没有写入上面的代码时):
至此完结。欢迎各位前辈指正。
另请求打赏:支付宝: