在其他论坛[1]看到一张图,总结了平时常见的各种乱码的特点与成因。
大部分乱码都是因为读取内容时编码方式选错了。大家看到乱码时,可以尝试对照这张表,选择正确的编码方式。
补充一种,我称之为“冒汉字码”:外文里面会突然冒出来中文。和“古文码”是一体两面。
比如:
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编码读取时,字节序列被解析为“鈥檜”两个汉字,从而出现乱码
还有烫烫烫和屯屯屯
一般是程序出现Bug,读取了不该读取的、未定义的内存区域,并且系统尝试以简体中文编码(GBK)将其显示出来时发生的,因为 Visual Studio 编译器会将未初始化的栈(Stack)内存用 0xCC 填充,未初始化的堆(Heap)内存用 0xCD 填充,用GBK编码解析,就分别变成了烫烫烫和屯屯屯。
话说古文码ai好像能读懂