2011-07-15 228 views
12

右單引號(U + 2019) 與 省略號(U + 0027)右單撇號與撇號?

的是這兩個角色之間的區別?

我遇到了這個問題,我使用CAtlString從資源文件中加載字符串,並且在某些Windows安裝中,LoadString嘗試加載包含U + 2019的字符串時失敗,但它適用於其他某些Windows安裝。 U + 2019字符出現在我從Word複製的資源文件中的字符串中,並且U + 0027出現在手工編碼的字符串中。爲什麼LoadString(有時)會窒息?

回答

20

這兩個字符有什麼區別?

爭論!

按照名稱,人們會想象捲曲僅用作引號,並且直線僅用作真正的撇號,即省略字母的指示符。

但是,英語中的傳統排版練習總是使用捲曲來呈現撇號。就我個人而言 - 我可能一個人在這裏 - 我不喜歡這個。它可以使更多的曖昧閱讀:

「他說,‘這是魚‘N’芯片’......」

與撇號是直是(略)更清晰的行情終止於:

「他說,‘這是魚‘N’芯片’......」

和撇號是「直」更有意義對我來說是因爲它表示遺漏字母的目的沒有固有的方向性,而引號明顯是不對稱的。

在傳統的ASCII,當然,沒有智能引號,所以撇號總是用於兩...

在某些Windows安裝中,加載鏈試圖加載包含字符串時失敗U + 2019,但它適用於其他Windows安裝。

在這裏,您正在遇到'ANSI'代碼頁的恐怖。這是在不同的Windows安裝語言環境中不同的默認字符編碼。因此,在西部地區的一臺機器上,當您在日文版Windows上閱讀資源時,會得到不同的結果。

非常不幸的是,Windows有不同的默認代碼頁,而不是像UTF-8一樣使用單個全局編碼,但現在修復爲時已晚。如果您將整個應用程序編譯爲Unicode應用程序(因此您將使用LoadStringW而不是LoadStringA),那麼您可以更好地處理非ASCII字符,如智能引號。

如果你不能移動到一個Unicode應用程序,你有點卡住了。您將無法處理非ASCII字符,例如全局的智能引號,因此請堅持使用ASCII字符,例如單獨的撇號。

的U + 2019字符出現在我的資源文件中的字符串,我從Word

複製是,Word有一個惱人的自動更正功能,取代你與智能引號輸入所有撇號。當你處理代碼時,這是特別不可取的,其中''會破壞程序;但即使對於普通的英語也是錯誤的,因爲無法正確猜測引用的期望方向。 (例如,它會在「fish」n「籌碼」中錯誤地得到其中的一個撇號)。

我建議關閉自動替換的智能引號功能。如果你想要聰明的語錄,最好故意輸入它們。不幸的是,他們在大多數鍵盤佈局上輸入都很不方便,通常需要難以理解的Alt + numpad序列。我個人使用this one將它們放到Alt + []鍵上。

+0

夢幻般的答案 - 非常徹底!感謝您花時間給出這樣深入的解釋。 – Ian

+0

你並不孤單,認爲它是錯的。 ;)然而,捲曲的一個在歷史上更爲正確,實際上UTF中推薦的字符是撇號(不幸的是)。更多細節可以在這裏找到:https://www.quora.com/Punctuation-Why-is-the-right-single-quote-U+2019-and-not-the-semantically-distinct-apostrophe-U+0027 -the-preferred-apostrophe-character-in-Unicode – stefanct

+0

這是一篇有趣的相關文章https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html – theoutlander

3

歷史上,單引號和雙引號成對出現,左(開)和右(關)。

多年來,電腦的字符集都是有限的,每個字符集都有一種形式。

現在,隨着Unicode的出現,完整的表單可用,但對它們的支持仍然有限。編程語言仍然使用簡單的表單,而完整的表單仍然可能導致問題。