师傅你而 发表于 2018-6-18 11:55:41

Windows中文编码显示问题集锦

  1)控制台中文乱码 解决方案
  问题根源
  中文显示乱码的原因是控制台设置的编码格式,如果控制台设置的编码格式是GBK,数据库的存储内容是UTF-8,当然无法正常显示
  解决方案
  1)启动CMD,查看当前的字符集编码,使用指令chcp
  Active code page:65001 :UTF-8编码
  活动代码页:936 :GBK编码
  注意:很多用户希望能够在控制台下输入中文,必须使用指令chcp 936,切换到GBK编码格式,才能够正常输入
  2)目前查看UTF-8编码的数据库文件,使用指令chcp 65001,切换到UTF-8编码字符集
  3)进入到sqlite.exe程序的目录,启动sqlite.exe,这个时候正常显示UTF-8数据库内容
  4)如果数据库内容是GBK编码,可以使用chcp 936。
  2)VS调试:字符串中的字符无效
  场景
  网络发送过来的报文是utf-8编码的Json数据,其中保存有中文。使用Jsoncpp解析的时候单步调试获取到的变量,在获取包含中文变量的时候,查看std::string字符串变量,提示;字符串中的字符无效
  解析
  VS高版本新加的功能,如果字符串中包含有非打印字符,或者utf8编码,调试器自动显示:字符串中的字符无效。在这里被误导过,以为Jsoncpp无法正确解析utf-8编码的格式,其实Jsoncpp已经解析出内容,只是无法在这种情况下显示中文,必须是GBK编码才行
  历程
  std::string strName = root["name"].asString(); //name里面的中文字符:风雨在途
  这个时候定位到strName,提示字符串中的字符无效
  解决
  将strName添加监视,在名称strName之后,添加,s8,就可以正常显示了
  例子
  名称                  值
  strName,s8风雨在途
页: [1]
查看完整版本: Windows中文编码显示问题集锦