1)控制台中文乱码 解决方案
茫崖网站制作公司哪家好,找成都创新互联公司!从网页设计、网站建设、微信开发、APP开发、响应式网站等网站项目制作,到程序开发,运营维护。成都创新互联公司自2013年创立以来到现在10年的时间,我们拥有了丰富的建站经验和运维经验,来保证我们的工作的顺利进行。专注于网站建设就选成都创新互联公司。问题根源
中文显示乱码的原因是控制台设置的编码格式,如果控制台设置的编码格式是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 风雨在途
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。