【笔记】字符编解码乱码

前言

字符编解码乱码

锟斤拷

  • 使用Unicode解码字符时,如果解码超出范围[0x0000,0x10FFFF],则Unicode会将其定义为U+FFFD(�),内存中的值为0xEFBFBD
  • 使用GBK解码字符时,会将其识别为0xEFBF0xBFEF0xBFBD

EF BF:锟
BD EF:斤
BF BD:拷

1
EF BF BD EF BF BD EF BF
  • 使用GBK解码字符时,如果解码的最后一个字符是单字节,则GBK会将其定义为0x3F
    • 例如:使用Unicode编码的0xE4BD0A),使用GBK解码的时候会被定义为0xE4BD3F

烫/屯

  • 使用VisualStudio的debug模式运行程序时,VisualStudio会将栈内存初始化为0xCC
  • 使用GBK解码字符,会将其识别为0xCCCC

CC CC:烫

1
CC CC CC CC CC CC CC CC
  • 使用VisualStudio的debug模式运行程序时,VisualStudio会将堆内存初始化为0xCD
  • 使用GBK解码字符,会将其识别为0xCDCD

CD CD:屯

1
CD CD CD CD CD CD CD CD

淇℃伅

  • 使用Tomcat启动JavaWeb项目时,控制台会输出Unicode编码的0xE4BFA10xE681AF
  • 使用GBK解码字符,会将其识别为0xE4BF0xA1E60x81AF

E4 BF:淇
A1 E6:℃
81 AF:伅

1
E4 BF A1 E6 81 AF

完成

参考文献

百度百科
CSDN——zhm_cs