右单引号和撇号有何区别?

25

右单引号(U+2019)与撇号(U+0027)有什么区别?

这两个字符有何不同?

我遇到了这样的问题:我使用CAtlString从资源文件中加载字符串,在某些Windows安装中,当尝试加载包含U+2019的字符串时,LoadString会失败,但在其他一些Windows安装中它可以正常工作。在我的资源文件中,从Word复制的字符串中出现了U+2019字符,而手动编码的字符串中则出现了U+0027。为什么LoadString有时会出现这种问题?

2个回答

40
这两个字符有何区别?
这很难说!按名称来看,人们可能认为弯曲的 ‹’› 只用作引号,而直角的 ‹'› 则只用作真正的撇号,用于省略字母。
然而,在英语传统排版中,始终使用弯曲的 ‹’› 来表示撇号。就我个人而言——也许只有我一个人——我不喜欢这种做法。它会导致阅读理解更加模糊:
“他说:“这是 fish ’n’ chips”...”
如果使用‘straight’ apostrophe(即直角的撇号),则更容易判断引用结束处:
“他说:“这是 fish 'n' chips”...”
对我来说,直角的撇号更合理,因为它表示省略字母的目的没有固有的方向性,而引号在目的上显然是不对称的。
当然,在传统ASCII中没有智能引号,所以撇号通常用于两者兼容...
在某些Windows安装中,当尝试加载包含U+2019的字符串时,LoadString失败,但在一些其他Windows安装中可以正常工作。
这里遇到了‘ANSI’代码页的恐怖。这是一种默认字符编码,在不同的Windows安装程序语言环境下是不同的。因此,在西方地区的机器上,读取资源时会得到不同的结果,而在日本Windows上读取相同的内容则会有所不同。
很不幸,Windows使用不同的默认代码页而不是像UTF-8这样使用单一全局编码,但现在修复已经太晚了。如果将整个应用程序编译为Unicode应用程序(因此将使用LoadStringW而不是LoadStringA),则可以更好地处理像智能引号这样的非ASCII字符。

如果您无法转移到Unicode应用程序,就有点困难了。您将无法全局处理像智能引号这样的非ASCII字符,因此请仅使用ASCII字符,例如直的撇号 ‹'›。

我从 Word 复制到我的资源文件中的字符串中出现了 U+2019 字符。

是的,Word 有一个很烦人的自动更正功能,会将您键入的所有撇号替换为智能引号。当您处理代码时,这特别不可取,因为 ‹’› 将导致程序崩溃;但即使对于普通英语来说,也是错误的,因为不可能准确猜测所需引号的方向。(例如,“fish 'n' chips” 中的引号其中一个将被倒过来。)

我建议关闭自动替换为智能引号的功能。如果您想要智能引号,最好是有意识地输入它们。不幸的是,在大多数键盘布局上,它们很难输入,通常需要使用模糊的 Alt + 数字键序列。我个人使用这个工具将它们放在 Alt+[] 键上。


非常棒的回答-非常详尽!感谢您抽出时间给出如此深入的解释。 - Ian
你绝对不是唯一一个认为这是错误的。;) 然而,花括号字符在历史上更加正确,实际上是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
这里有一篇有关编程的有趣文章 https://www.cl.cam.ac.uk/~mgk25/ucs/quotes.html - Nick
“我不喜欢这个。它会导致更多的歧义阅读[...]使用直角引号,引号结束位置(略微)更清晰。” 实际上,这不是撇号的问题,而是英语中选择引号造成的歧义。在大多数欧洲国家(除英格兰外),首选字符是尖括号(«I’m ‹not› a quote»),消除了任何歧义。当可以访问UTF8时,永远不应该用U+0027撇号替换撇号。有关参考和操作方法,请查看https://practicaltypography.com/apostrophes.html等网站。 - Canned Man

4

历史上,单引号和双引号都是成对出现的,有左(开)和右(闭)之分。

多年来,计算机字符集受限,每个字符只有一种形式。

现在,随着Unicode的出现,完整的形式已经可用,但对它们的支持仍然有限。编程语言仍使用简单的形式,而完整的形式仍可能导致问题。


在法语中,打印机使用书法撇号(右单引号)’,而开发人员使用排版用的撇号作为单引号。对于法语用户,请参考(FR)https://bepo.fr/wiki/Trucs_et_astuces#Je_voudrais_avoir_les_.3C_et_.3E_en_acc.C3.A8s_direct - bcag2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接