1

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

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

有人可以帮助解释这里发生了什么吗?

4

3 回答 3

2

你的错误是认为这个字符串是 ASCII。

如果您使用的是字符编码为 CP-1252 的 Windows 机器(请参阅http://en.wikipedia.org/wiki/Windows-1252),那么您的“代码” 146 是一种引用(请参阅维基百科中的表格页)。

于 2012-07-30T21:04:07.407 回答
1

这是一个右单引号而不是单引号:

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

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

于 2012-07-30T21:00:52.567 回答
1

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

于 2012-07-30T21:02:48.450 回答