奇怪的ASCII/Unicode字符

Weird ASCII/Unicode Character

本文关键字:Unicode 字符 ASCII      更新时间:2023-10-16

Peter Thiel的CS183 Notes有一个带有ASCII字符串的文件名:"Peter Thiel’s CS183.pdf",或者至少它在Windows资源管理器中是这样打印出来的。然而,在调试程序时,我注意到'字符不是纯撇号,它的(无符号字符)值为146,而不是预期的39。

为了测试它是否是我程序中的一个错误,我重命名了文件,删除了字符并重新键入了撇号。果不其然,这次我的程序显示了正确的值。因此,我推断它必须是Unicode字符(因为我在ASCII表中看不到它)。但是,它不是多字节字符,因为字符串中的下一个字节是"s"。

有人能解释一下这里发生了什么吗?

您的错误是认为此字符串是ASCII。

如果您使用的是字符编码为CP-1252的Windows机器(请参阅http://en.wikipedia.org/wiki/Windows-1252),则您的"代码"146是引用(参见维基百科页面上的表格)。

它是Windows代码页CP1252中的右单引号,既不是ASCII(或ISO-8859-1)也不是任何形式的Unicode。

它是右单引号,而不是单引号:

http://www.ascii-code.com/

就像你说的,39是一个单引号,但文件必须使用右单引号命名,十进制值146在Windows Latin-1扩展字符CP-1252中。