目录

直奔主题

为什么字符集编码用ANSIC和UNICODE还不够,还需要使用UTF-8呢?

查看默认编码格式

windows批处理遇到的相关问题

CMake遇到的相关问题

C/C++字符编码转换

转换的目的

转换的原理

如何进行转换(代码页的选择问题)

举例


直奔主题

编译一个开源项目的时候发现读取char*指向的数据显示字符串中的字符无效

char *buff = "abc中文哈哈ccd";

默认的情况下,Visual Stdio 2017调试器只能正常显示ANSIC字符串和UNICODE字符串,而UTF-8字符串及其他代码页类型的字符串就不能正常显示了。但是其数据确实存在,由于这个不显示出来实际的内容有的时候可能导致对调试内容的误判(以为变量未赋值上,或者也不能知道数值是否正确)。

显示UTF-8的办法就是在监视的变量后边加一个,s8,如下图

MSDN官网网址阐述的其他格式(Format specifiers for C++ in the Visual Studio debugger):

https://docs.microsoft.com/en-us/visualstudio/debugger/format-specifiers-in-cpp?view=vs-2019

相关内容参考以下两篇文章

让VS调试器正确显示UTF-8字符串

跨平台C/C++代码编码问题

一般打开文件不要使用notepad,推荐使用Notepad++、UltraEdit这两个都是比较好的文本编辑器,能查看到文件的编码格式等特殊信息。

为什么字符集编码用ANSIC和UNICODE还不够,还需要使用UTF-8呢?

这里涉及一个实际的问题就是在写跨平台的代码时,同一个文件的代码不仅要在windows平台上使用,还需要再Linux上或者是Mac使用。

windows OS区域语言设置为中文时,Visual Stdio 2017默认的文件编码时GB2312,并且系统控制台的编码格式为GBK。可以在cmd下查看当前控制台的代码页类型

Linux系统默认文件编码都是UTF-8的,Mac上未调查

查看默认编码格式

如果对编码不太熟悉,建议查看常用的开发环境,或者编辑器的默认编码格式

查看【Visual Stdio】默认编码格式

查看【QtCreater】默认编码格式

查看【Sublime Text】默认编码格式

查看【gVim】默认编码格式

查看【浏览器】默认编码格式

查看【Visual Studio Code】默认编码格式

查看【PhpStorm】默认编码格式

windows批处理遇到的相关问题

我之前写了一段windows的批处理,其中输出内容有中文,如下面的语句

ECHO "输出中文测试,是否为乱码"

通过VS调用脚本输出到VS的输出窗口,和直接执行批处理脚本时,有时编码设置的不对就会出现输出的内容为乱码

CMake遇到的相关问题

使用CMake编写跨平台的CMakelists.txt文件时,一定要注意CMakelists.txt文件的编码格式,这个决定了由CMake生成的项目解决方案下能否正常显示CMakelists.txt的中文信息有关。

C/C++字符编码转换

转换的目的

转换的原理

如何进行转换(代码页的选择问题)

举例

  • 多字节、UTF-8相互转换
  • 宽字节(UNICODE)、UTF-8相互转换
  • 多字节、宽字节(UNICODE)相互转换

Visual Stdio 2017显示UTF-8字符串(中文的情况下),字符串中的字符无效相关推荐

  1. 关于VS2017调试时,字符数组显示字符串中的字符无效问题

    关于VS2017调试时,字符数组显示"字符串中的字符无效"问题 1.如果已经分配过内存,可能是越界导致的指令错误. 2.可能是字符数组成员的值超出了ASCII码表示范围,导致字符无 ...

  2. c#给定编码中的字符无效_C#程序检查给定的字符串是否等于(==)运算符

    c#给定编码中的字符无效 Input two strings and check whether they are equal or not using C# program. 输入两个字符串,并使用 ...

  3. 双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标

    JB3开始,双卡版本不插卡的情况下状态栏中只显示了一个信号图标,而不是两个信号图标,如何修改为2个图标 [SOLUTION]   这是JB3 default的设计,如果要恢复两个信号图标,请参考如下方 ...

  4. 小程序图片不显示(在没有错误的情况下)

    2018年9月20日 小程序中的图片忽然间不显示了,在微信浏览器和其他浏览器中可以显示,百思不得其解. 只能用排除法. 1.图片路径.名称去掉中文,特殊符号: 2.图片内存过大: 3.图片尺寸像素过大 ...

  5. c++ 字符串中的字符无效_13python中的字符串

    点击蓝色"潭时录"关注我丫 加个"星标",每天和小潭一起快乐的学习 你好,我是在学python的小潭.通过前两天的文章12-python中的集合我们学习了有关集 ...

  6. Nginx Lua 之Shared Dict get()方法在存入字符串超长的情况下不支持高并发

    由于需要在各worker之间共享一些关键数据,数据格式是表,选用了lua_shared_dict dict_name dict_size;这个共享内存功能 然而ngx.shared.dict只支持数字 ...

  7. c语言字符串中的字符无效,字符串操作

    字符串主要用于编程,字符串在存储上类似字符数组,所以它每一位的单个元素都是可以提取的.字符串也有很多操作,在正文将对C语言.C++和java中对其操作进行介绍. 中文名 字符串操作 外文名 strin ...

  8. vs visual stdio 调试 显示指针为数组

    假如有这样一个指针 int *  idx16  那么要想在调试里面显示为数组并且要显示的数组元素个数为24的话,则要写成idx16,24 如下图

  9. visual studio 2017 显示行号

    1.Tools中选择Options..., Options界面中Test Editor -> All Languages(当然也可以设置对应的语言) -> General, 在Settin ...

最新文章

  1. R语言计算回归模型每个样本(观察、observation、sample)的DFFITS度量实战:忽略单个观察(样本)时,回归模型所做的预测会发生多大的变化
  2. 必须掌握的八个【cmd 命令行】[转]
  3. jQuery获取Select选择的Text和 Value(转)
  4. windows编写linux脚本,Windows PowerShell:共享您的脚本 - 在脚本中编写 Cmdlet | Microsoft Docs...
  5. 百度不收录你网站的原因
  6. Cmake确实应该用到的时候再学
  7. 电力项目十--整合文本编辑器
  8. MATLAB切比雪夫带通滤波器
  9. 只需 1 分钟,这个网站用 AI 分离歌曲的人声、伴奏和乐器声
  10. jar解压war文件失败
  11. 数据同步工具oracle goldengate安装与配置
  12. python教你如何把自己的微信变成机器人
  13. Android文字转语音引擎(TTS)简单比较及下载
  14. UFS和EMMC的区别--原理学习
  15. 一位川大师兄的计算机之路
  16. Mycat个人心得笔记(一)
  17. 前端从后端导出excel表格文件的两种方法
  18. 新闻 | Mapbox 牵手阿里,飞猪旅行上线六大城市地图功能
  19. 【“工业大数据预测”系列】——第3篇:基于统计和信号的特征提取
  20. Jpa持久对象状态,一级缓存,二级缓存

热门文章

  1. micropython做产品开发_关于MicroPython是否可以真正用在产品开发的讨论
  2. FPGA学习---Quartus II新建工程
  3. Java中数字格式化format方法
  4. python将excel文件变成txt文件
  5. Deep-Clustering-for-Unsupervised-Learning-of-Visual-Features
  6. Python 西瓜书机器学习支持向量机(SVM)
  7. too many connections的一个实践
  8. Pytorch环境安装【Python3.7+Anaconda3+CUDA10.1】
  9. 数据流程图 符号说明
  10. TensorFlow神经网络(九)VGG net论文阅读笔记