奇怪的ASCII/Unicode字符
Weird ASCII/Unicode Character
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中。
相关文章:
- 如何存储 unicode 字符并将其输出到文件?
- C++:打印 Unicode 字符
- 在 Windows 中使用 boost::p rogram_options 从命令行参数读取 Unicode 字符
- 获取Unicode字符C++的十进制值
- 用wchar_t处理 unicode 字符好吗?它不会引起任何问题吗?
- C++:如何将 unicode 字符打印到文本文件
- 动态计算 unicode 字符
- 如何将整数转换为 unicode 字符
- C++20 中的严格别名规则是否允许标准 c++ unicode 字符和下划线类型之间"reinterpret
- MessageBox打印来自TCHAR缓冲区的额外Unicode字符
- 如何将小数NCR转换为Unicode字符(C )
- SQLGetPrivateProfileString 错误地读取 Unicode 字符
- 将 Unicode 字符/字符串写入文件
- 将 Unicode 字符存储在.txt文件中的新行中
- 从终端 C++ 中的字符串中打印出 unicode 字符
- Unicode 字符分类与 boost::locale
- 字符数组中的滤波器unicode字符
- Unicode 字符问题/转换参数
- 从包含Unicode字符的文件中读取
- 从ASCII到Unicode字符代码的转换(FreeType2)