web-dev-qa-db-ja.com

正しい単一のアポストロフィとアポストロフィ?

右一重引用符(U + 2019)とアポストロフィ(U + 0027)

これらの2つのキャラクターの違いは何ですか?

CAtlStringを使用してリソースファイルから文字列をロードするときにこの問題が発生しました。一部のWindowsインストールでは、U + 2019を含む文字列をロードしようとすると、LoadStringが失敗しますが、他の一部のWindowsインストールでは機能します。 U + 2019文字は、Wordからコピーしたリソースファイルの文字列に表示され、U +0027は手作業でコーディングした攪拌に表示されます。 LoadStringが(時々)これを窒息させるのはなぜですか?

19
TripShock

これらの2つのキャラクターの違いは何ですか?

議論の余地がある!

名前からすると、カーリーの‹’›は引用符としてのみ使用され、ストレートの‹’›は、省略された文字の指標である実際のアポストロフィとしてのみ使用されることが想像されます。

ただし、英語での従来の組版の慣習では、常にカーリー‹’›を使用してアポストロフィをレンダリングします。個人的に-そして私はここで一人かもしれません-私はこれが好きではありません。それはより曖昧な読書をすることができます:

「彼は、 『フィッシュアンドチップス』と言った...」

アポストロフィがまっすぐであると、引用がどこで終わるかが(わずかに)明確になります。

「彼は、 『フィッシュ・アンド・チップス』と言った...」

また、アポストロフィが「ストレート」であることは、省略された文字を示す目的には固有の方向性がないため、私にはより理にかなっていますが、引用符は目的が明らかに非対称です。

もちろん、従来のASCIIにはスマートな引用符がないため、アポストロフィは常に両方に使用されます...

一部のWindowsインストールでは、U + 2019を含む文字列を読み込もうとすると、LoadStringが失敗しますが、他の一部のWindowsインストールでは機能します。

ここでは、「ANSI」コードページの恐怖に直面しています。これはデフォルトの文字エンコードであり、Windowsのインストールロケールによって異なります。そのため、西部地域のマシンでは、リソースを読み取るときと日本のWindowsで読み取るときで異なる結果が得られます。

WindowsがUTF-8のような単一のグローバルエンコーディングを使用する代わりにさまざまなデフォルトのコードページを持っていることは非常に残念ですが、今すぐ修正するには遅すぎます。アプリケーション全体をUnicodeアプリとしてコンパイルすると(したがって、LoadStringWではなくLoadStringAを使用することになります)、スマートクォートなどの非ASCII文字をより適切に処理できます。

Unicodeアプリケーションに移行できない場合は、少し行き詰まっています。スマートクォートのような非ASCII文字をグローバルに処理することはできないため、ASCIIストレートアポストロフィ‹'›のような文字だけを使用してください。

U + 2019文字は、Wordからコピーしたリソースファイルの文字列に表示されます

はい、Wordには、入力したすべてのアポストロフィをスマートクォートに置き換える迷惑なオートコレクト機能があります。これは、コードを処理しているときに特に望ましくありません。コードを処理すると、‹’›がプログラムを中断します。しかし、引用の望ましい方向を正しく推測することができないので、それは普通の古い英語でも間違っています。 (たとえば、「フィッシュアンドチップス」のアポストロフィの1つが間違った方法で取得されます。)

スマートクォートによる自動置換機能をオフにすることをお勧めします。スマートクォートが必要な場合は、意図的に入力することをお勧めします。残念ながら、ほとんどのキーボードレイアウトで入力するのは不便であり、多くの場合、あいまいなAlt +テンキーシーケンスが必要になります。個人的には これ を使用してAlt + []キーにドロップします。

31
bobince

歴史的に、シングルクォートとダブルクォートは、左(開いた)と右(閉じた)のペアで提供されます。

何年もの間、コンピュータの文字セットは限られており、それぞれが1つの形式でした。

現在、Unicodeの出現により、完全な形式が利用可能になりましたが、それらのサポートはまだ制限されています。プログラミング言語は依然として単純な形式を使用しており、完全な形式でも問題が発生する可能性があります。

3
MRAB