utf8和gbk的噩梦
- 他们之间的关系
- 他们和c++的关系
- 他们和文件的问题
4.还有和编译器的关系
5.还有和程序看内存的关系
这几个问题
首先,字符是要村子内存中的,不同编码,在内存中的值是不同的.由图可以看出内存的值不一样的.


他们和c++的关系
这是我瞎扯的,他们和c++的关系,编译器读文件,发现的
这个字符,然后把的
赋值给对象.
那么对象的内存里面的值会因为什么不同呢
我们继续做实验
-
我改了一个地方,程序没变.
image.png
你需要和上面对比,要和第一张对比
- 是的,值变了,那是为什么呢,我改了什么呢.
- 我改了这个
cpp文件
的编码格式
image.png
这是前后的文件格式的对比.
答案来了
程序运行的时候,是读文件,文件的值是什么,变量的值就是什么
的
在不同文件格式的中的内存值是不同的
继续
他们和文件的问题也解决了,好像,再加一个问题,他们和运行环境的关系
重新把文件社会utf8

终端输出gbk乱码,怎么解决呢
把程序设成处理gbk的环境.这样他看内存的样子就是gbk的眼睛.

你和上面的图对比,会发现输出gbk的时候是正确的.就是让程序看内存的时候,用gbk的眼睛去看.
希望看到的人,能有编码有个理解
网友评论