c - 在 C 中使用 printf() 打印出这个字符符号 ÿ (ASCII 152)
问题描述
我无法打印出这个特殊符号 ÿ (ASCII 152)。查看调试器,我可以看到变量正在保存特殊符号。目前它只是打印一个空格。
我的简化代码看起来像这样
结构:
typedef struct BufferDescriptor {
char* cb_head;
}* pBuffer;
//Current object
pBuffer ptr_Buffer;
将符号添加到 cb_head 的行:
//Calling addsymbol, the symbol used is EOF
addsymbol(ptr_Buffer, EOF);
Buffer* addsymbol(Buffer p, char symbol){
p->cb_head[add] = symbol;
}
我的 printf,我已经检查了变量缓冲区的值,它包含 ÿ 符号。但它只是打印出一个空格......是否有一些可能与机器相关的东西或我缺少的关于 ASCII 的东西。
printf("%c",buffer);
解决方案
如果相同的数字在不同的程序中显示不同,则可能是字符编码问题。将数字 152 解释为字符的方式有很多种。每个应用程序都可以使用不同的编码。听起来您的编辑器以及您要打印到的任何地方都使用不同的编码。
没有 ASCII 152。ASCII 是 7 位,只有 127。
ASCII有很多很多的扩展编码,它们添加了第 8 位来覆盖 128-255。它们对前 127 个字符共享相同的编码,之后它们会发散。CP 437 和CP 850为ÿ
152。Latin -1和Windows-1252 ÿ
为 255。大多数现代东西使用UTF-8,表示ÿ
为两个字节,c3 bf
.
152 在 Latin-1 中什么都不是,在 UTF-8 中什么都不是。
可能发生的情况是有些东西使用 UTF-8(152 无效),有些使用 CP 850(152 是ÿ
)。检查 IDE 的字符编码以及用于显示的任何内容。
推荐阅读
- python - 在 django 中找不到页面?
- asp.net-mvc - 在 ASP.Net MVC 中按周显示当前月份的数据
- node.js - .push 不是函数。(DISCORD.JS)
- excel - 是否可以使用 xlDialogSendMail 将选定范围作为 PDF 发送?
- javascript - Mongoose Schema 无法与 typescript 类型一起正常工作
- reactjs - 如何从 FlatList 中获取 renderItem 的高度?
- uml - 你能在 UML 序列图中将端口表示为生命线吗?
- xcode - 运行时的颠倒方向
- c++ - CryptoPP 生成无效密钥 RSA
- typescript - 如何在不忽略 TypeScript 警告的情况下测试 Object 是否具有键值:“字符串”不能用于索引类型?