奇怪的ASCII / Unicode字符

时间:2012-07-30 20:57:41

标签: c++ unicode ascii

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

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

有人可以帮忙解释这里发生的事情吗?

3 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:1)

这是一个正确的单引号而不是单引号:

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

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

答案 2 :(得分:1)

它是Windows代码页CP1252中的正确单引号,无论是ASCII(或ISO-8859-1)还是任何形式的Unicode。