常见乱码类型及成因

在其他论坛[1]看到一张图,总结了平时常见的各种乱码的特点与成因。

大部分乱码都是因为读取内容时编码方式选错了。大家看到乱码时,可以尝试对照这张表,选择正确的编码方式。


  1. https://forum.archlinuxcn.org/t/topic/12407/8 ↩︎

12 个赞

补充一种,我称之为“冒汉字码”:外文里面会突然冒出来中文。和“古文码”是一体两面。

比如:
abafite mikofoni nadufasha mu ijana cumi n’umunani
变成了:
abafite mikofoni nadufasha mu ijana cumi n鈥檜munani

产生原因是:
以UTF-8编码保存的撇号(U+2019,字节E2 80 99)及其后的字母u(75),被错误地用GBK编码读取时,字节序列被解析为“鈥檜”两个汉字,从而出现乱码

3 个赞

还有烫烫烫屯屯屯

一般是程序出现Bug,读取了不该读取的、未定义的内存区域,并且系统尝试以简体中文编码(GBK)将其显示出来时发生的,因为 Visual Studio 编译器会将未初始化的栈(Stack)内存用 0xCC 填充,未初始化的堆(Heap)内存用 0xCD 填充,用GBK编码解析,就分别变成了烫烫烫屯屯屯

2 个赞

话说古文码ai好像能读懂