温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Windows中文编码显示问题集锦

发布时间:2020-07-16 15:39:45 来源:网络 阅读:2113 作者:fengyuzaitu 栏目:系统运维

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 风雨在途


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI