右单引号(U+2019)与撇号(U+0027)有什么区别?
这两个字符有何不同?
我遇到了这样的问题:我使用CAtlString从资源文件中加载字符串,在某些Windows安装中,当尝试加载包含U+2019的字符串时,LoadString会失败,但在其他一些Windows安装中它可以正常工作。在我的资源文件中,从Word复制的字符串中出现了U+2019字符,而手动编码的字符串中则出现了U+0027。为什么LoadString有时会出现这种问题?
LoadStringW
而不是LoadStringA
),则可以更好地处理像智能引号这样的非ASCII字符。如果您无法转移到Unicode应用程序,就有点困难了。您将无法全局处理像智能引号这样的非ASCII字符,因此请仅使用ASCII字符,例如直的撇号 ‹'›。
我从 Word 复制到我的资源文件中的字符串中出现了 U+2019 字符。
是的,Word 有一个很烦人的自动更正功能,会将您键入的所有撇号替换为智能引号。当您处理代码时,这特别不可取,因为 ‹’› 将导致程序崩溃;但即使对于普通英语来说,也是错误的,因为不可能准确猜测所需引号的方向。(例如,“fish 'n' chips” 中的引号其中一个将被倒过来。)
我建议关闭自动替换为智能引号的功能。如果您想要智能引号,最好是有意识地输入它们。不幸的是,在大多数键盘布局上,它们很难输入,通常需要使用模糊的 Alt + 数字键序列。我个人使用这个工具将它们放在 Alt+[] 键上。
历史上,单引号和双引号都是成对出现的,有左(开)和右(闭)之分。
多年来,计算机字符集受限,每个字符只有一种形式。
现在,随着Unicode的出现,完整的形式已经可用,但对它们的支持仍然有限。编程语言仍使用简单的形式,而完整的形式仍可能导致问题。