2012-07-30 157 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。