右单撇号与撇号?

时间:2011-07-15 18:57:03

标签: windows unicode resources atl

右单引号(U + 2019)                与 撇号(U + 0027)

这两个字符有什么区别?

我遇到了这个问题,我使用CAtlString从资源文件加载字符串,在某些Windows安装中,LoadString在尝试加载包含U + 2019的字符串时失败,但它适用于其他一些Windows安装。 U + 2019字符出现在我从Word复制的资源文件中的字符串中,U + 0027出现在我手工编码的stirng中。为什么LoadString(有时)会阻塞它?

2 个答案:

答案 0 :(得分:30)

  

这两个字符有什么区别?

有争议!

按照名称,可以想象卷曲<'>仅用作引号,而直的<'>仅用作真正的撇号,是省略字母的指示符。

然而,英语中的传统排版练习总是使用卷曲的<'>来呈现撇号。个人 - 我可能在这里独处 - 我不喜欢这个。它可以使更多的模糊阅读:

  

“他说,'这是'''筹码'......”

撇号是直的,在报价结束的地方(边缘)更清晰:

  

“他说,'这是'''筹码'......”

而撇号是“直的”对我来说更有意义,因为它表示省略字母的目的没有固有的方向性,而引号显然是不对称的。

在传统的ASCII中,当然没有智能引号,所以撇号总是用于...

  

在某些Windows安装中,LoadString在尝试加载包含U + 2019的字符串时失败,但它适用于其他一些Windows安装。

在这里,你遇到了'ANSI'代码页的恐怖。这是一种默认字符编码,在不同的Windows安装语言环境中有所不同。因此,在西部地区的计算机上,当您在日语Windows上阅读资源时,会得到不同的结果。

非常不幸的是,Windows有不同的默认代码页而不是像UTF-8那样使用单一的全局编码,但现在修复已经太晚了。如果您将整个应用程序编译为Unicode应用程序(因此您将使用LoadStringW而不是LoadStringA),那么您可以更好地处理非ASCII字符,如智能引号。

如果你无法移动到Unicode应用程序,你会有点卡住。您将无法全局处理非智能引号等非ASCII字符,因此请坚持使用直接撇号等ASCII字符。

  

U + 2019字符出现在我从Word

复制的资源文件中的字符串中

是的,Word有一个恼人的自动更正功能,用智能引号替换你键入的所有撇号。当你处理代码时,这将是特别不希望的,其中<\ n>将破坏程序;但即使是普通的老英语也是错误的,因为无法正确猜出所需的报价方向。 (例如,它会以错误的方式获得“fish'n'筹码中的一个撇号。”

我建议关闭自动替换智能报价功能。如果你想要智能报价,最好刻意输入它们。不幸的是,它们在大多数键盘布局上输入都不方便,通常需要模糊的Alt +小键盘序列。我个人使用this one将它们放到Alt + []键上。

答案 1 :(得分:3)

历史上,单引号和双引号成对出现,左(开)和右(闭)。

多年来,计算机的字符集是有限的,每种都有一种形式。

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