手持两把锟斤拷, 口中疾呼烫烫烫, 脚踏千朵屯屯屯, 笑看万物锘锘锘

� (REPLACEMENT CHARACTER, U+FFFD) - Replaces an invalid or unrecognizable character. Indicates a Unicode error.

 

Unicode 是一种字符集标准,UTF-8(Universal Transformation Format - 8-bit)则是一种对 Unicode 的编码方式。UTF-8 的核心思想是将 Unicode 字符映射为可变长度的字节序列,以兼容 ASCII 并支持多语言字符集。

UTF-8 编码规则

UTF-8 使用 1 到 4 个字节来表示 Unicode 字符:

Unicode 范围 UTF-8 编码形式 位数分配
U+0000 ~ U+007F 0xxxxxxx 7 位 (1 字节)
U+0080 ~ U+07FF 110xxxxx 10xxxxxx 11 位 (2 字节)
U+0800 ~ U+FFFF 1110xxxx 10xxxxxx 10xxxxxx 16 位 (3 字节)
U+10000 ~ U+10FFFF 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 21 位 (4 字节)

U+FFFD范围在 U+0800 ~ U+FFFF 内,使用 3 字节 模板:1110xxxx 10xxxxxx 10xxxxxx

FFFD的二进制为1111 1111 1111 1101

根据 UTF-8 编码规范:

  • 3 字节 UTF-8 模板可以容纳 16 位 数据。
  • 数据从 Unicode 码点的最低有效位(LSB)开始,按以下方式分配:
UTF-8 模板位置 对应的数据位
1110xxxx 4 个最高有效位 (最高 4 位)
10xxxxxx 接下来的 6 位
10xxxxxx 最低的 6 位

最后得到U+FFFD对应的utf-8的二进制为1110 1111 1011 1111 1011 1101,转换为十六进制后得到EF BF BD

 

 

锟斤拷

“�”不要怀疑,没有乱码,就是要打这个字符。“�”这个字符在Unicode字符集中表示无法显示的特殊字符,在UTF-8下,他的16进制形式是'0xEF 0xBF 0xBD'(三个字节)。

当连续两个“�”“�”字符放一起时:'0xEF 0xBF 0xBD’,‘0xEF 0xBF 0xBD'。

一旦将这个UTF-8字符转换为GBK码(两个字节),便是:‘0xEF 0xBF ’,‘0xBD 0xEF’,‘0xBF 0xBD’。 其对应的GBK字符便是:锟(0xEFBF),斤(0xBDEF),拷(0xBFBD)。

 

在 Windows 平台下(特别是在使用 Visual Studio 调试版本时),未初始化的内存通常会被填充上特定的调试字节,以便更容易发现未初始化内存的错误。具体来说:

  • 栈内存:调试时,编译器会将未初始化的栈内存填充为 0xCC(每个字节为 0xCC)。这与 x86 处理器中 INT 3 指令的机器码相同,有助于在程序执行到未初始化的栈数据时触发调试断点或中断。

  • 堆内存:调试版本中,通过调用堆分配函数(如 mallocnew)申请的内存,如果未被写入,会用 0xCD 填充。这可以帮助检测对未初始化堆内存的错误使用。

在 Release 版本中,编译器不会自动填充这些值,内存通常保持为分配时的“脏数据”。

例如,在 Visual Studio 的 Debug 模式下,你可能会看到局部变量的值显示为“烫烫烫…”(0xCC 填充)或堆内存显示为“屯屯屯…”(0xCD 填充)。这种做法有助于调试和定位内存错误。

 

手握两个锟斤拷,口中直呼烫烫烫-CSDN博客

打印乱码:锟斤拷、烫烫烫、屯屯屯、锘锘锘_烫烫烫屯屯屯-CSDN博客

 

unicode - Character code of unknown character-character, e.g. square or question mark romb - Stack Overflow

Unicode has two symbols for unknown characters:

  • □ (WHITE SQUARE, U+25A1) - Replaces a missing or unsupported Unicode character.
  • � (REPLACEMENT CHARACTER, U+FFFD) - Replaces an invalid or unrecognizable character. Indicates a Unicode error.

Sources

Specials (Unicode block) - Wikipedia

 

 

 

 

posted @ 2025-03-11 17:54  ChuckLu  阅读(35)  评论(0)    收藏  举报