1原因

c++编程中乱码的原因主要是数据存储的格式和解析的格式不匹配导致的。

目前市面上主流的编码格式是gbk和utf8

在中国区的电脑上默认的是gbk编码,但很多编程软件和编程库需要的是utf8,在ubuntu上也是utf8为默认语言的。

这就导致在编程的时候往往会出现乱码的情况。

2解决方法

解决乱码的方法是明确并且统一解析和读取的编码格式,以此减少程序编程中乱码的情况。

这里我们采用统一的utf8编码格式。

首先我们要知道会出现gbk编码格式的情况有哪些

2.1使用库读写文本的时候

有些文本写入的库并不需要给出具体的编码格式,比如c++的标准库,默认是和系统相同的编码集,这个时候我们明确的制定编码格式,包括在读取的时候。

2.2 在传递汉字的时候

有的库一旦出现汉字的参数就会崩溃,这是因为在数据解析的时候出现了数据的越界读取,有的库默认一个字母一个char,这样3个字节的gbk就会产生越界访问,一旦产生越界,或者会被设定好的程序直接杀死,或者会访问到某些不能访问的系统空间,进而产生崩溃,某些程序路径不允许中文也是这个原因。

2.3使用系统工具的时候

比如使用我们的控制台的时候,使用vscode程序自带的输出框的时候,这些都是和系统的编码一致的,这个时候就需要我们去修改系统工具的编码,但这可能会到导致一些不可预料的问题,和正常电脑的环境出现差别,最好的方法是直接在程序中调整程序输出的数据为gbk编码。

Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐