2012-07-30 153 views
1

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

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

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

回答

2

你的错误是相信这个字符串是ASCII。

如果您使用的是具有字符编码CP-1252的Windows机器(请参见http://en.wikipedia.org/wiki/Windows-1252),那么您的“代码”146是 引用类型(请参见维基百科页面上的表格)。

1

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

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

就像你说的,39是一个单引号,但该文件必须使用右单引号被命名,小数值为146的Windows Latin-1扩展字符,CP-1252。

+0

呵呵,猜我的ascii表已经过时了。谢谢 – chacham15 2012-07-30 21:02:44

+2

它不是ASCII;它是Windows CP1252。 ASCII只是低于128. – prosfilaes 2012-07-30 21:03:20

+0

@prosfilaes我认为你是对的,http://www.asciitable.com/“把它列为其他东西。” – chacham15 2012-07-30 21:04:40

1

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