查看本文前先弄清字符编码的大概含义,可点击本链接
本文参考链接
VS为什么会出现中文乱码(解决方案一)
VS为什么会出现中文乱码(解决方案二)
VS为什么会出现中文乱码(解决方案三)
VS为什么会出现中文乱码(解决方案四)
查看控制台编码
编码对应标识符
操作系统编码(一)
操作系统编码(二)
VS 命令行
更改执行字符集
bom
utf-8, wstring,ansi
文件读取
宽窄字符转换
VS 字符从输出到输出
调试窗口
Windows 2000是使用Unicode从头进行开发的,如果调用任何一个Windows函数并给它传递一个ANSI字符串,那么系统首先要将字符串转换成Unicode,然后将Unicode字符串传递给操作系统。如果希望函数返回ANSI字符串,系统就会首先将Unicode字符串转换成ANSI字符串,然后将结果返回给你的应用程序。进行这些字符串的转换需要占用系统的时间和内存。通过从头开始用Unicode来开发应用程序,就能够使你的应用程序更加有效地运行。
Windows CE 本身就是使用Unicode的一种操作系统,完全不支持ANSI Windows函数
Windows 98 只支持ANSI,只能为ANSI开发应用程序。
Microsoft公司将COM从16位Windows转换成Win32时,公司决定需要字符串的所有COM接口方法都只能接受Unicode字符串。
调试窗口
源码字符集编码:默认VS文件->高级保存选项->编码中可以查看设置当前源代码文件的源码字符集。向文件中写入数据时也是使用该编码写入。可通过XXX(待验证方式进行修改)。
执行编码:默认与操作系统相同,中文的Windows系统的编码为GB2312(兼容ASCII、GBK)。若文件带有bom,会根据bom将文件转换成编译器执行字符集(执行编码)后进行编译。
解析字符集:设置控制台程序输出代码页,默认与操作系统相同,通过"SetConsoleOutputCP(编码标识符);"语句可更改。用cin让用户输入时,却不能正确输出用户输入的中文字符。
可能是因为cout有自己的解析字符集,不会随着chcp命令改变。
我们运行的可执行文件并不是我们口中的那个CMD(按Win+R、cmd打开的那个CMD)。


1140

被折叠的 条评论
为什么被折叠?



