Правильный апостроф против апострофа? - PullRequest
19 голосов
/ 15 июля 2011

Правая одинарная кавычка (U + 2019) против Апостроф (U + 0027)

В чем разница между этими двумя персонажами?

Я столкнулся с этой проблемой, когда использую CAtlString для загрузки строки из файла ресурсов, и в некоторых установках Windows происходит сбой LoadString при попытке загрузить строку, содержащую U + 2019, но он работает в некоторых других установках Windows , Символ U + 2019 появляется в строках в моем файле ресурсов, который я скопировал из Word, а U + 0027 появляется в виде штрихов, которые я кодировал вручную. Почему LoadString (иногда) подавляется этим?

Ответы [ 2 ]

30 голосов
/ 16 июля 2011

В чем разница между этими двумя символами?

Аргументируемый!

Если идти по именам, можно подумать, что фигурные ‹'› предназначены только для использованияв качестве кавычки, и что прямая ‹'› используется только как настоящий апостроф, индикатор пропущенных букв.

Однако традиционная практика набора текста на английском языке всегда заключается в использовании фигурных ‹'› для отображенияапостроф.Лично - и я могу быть здесь один - мне это не нравится.Это может привести к более двусмысленному прочтению:

«Он сказал:« Это рыба »и« чипсы »...»

, причем апострофы прямые (незначительно)) яснее, когда цитата заканчивается:

«Он сказал:« Это рыба »и« чипсы »...»

, а апостроф «прямой» делает большесмысл для меня, потому что его цель указания пропущенных букв не имеет внутренней направленности, тогда как кавычки явно асимметричны по назначению.

В традиционном ASCII, конечно, нет умных кавычек, поэтому апостроф всегда используется дляоба ...

в некоторых установках Windows, LoadString завершается неудачно при попытке загрузить строку, содержащую U + 2019, но работает в некоторых других установках Windows.

Здесь вы встречаете ужас кодовой страницы «ANSI».Это кодировка символов по умолчанию, которая отличается в разных локалях установки Windows.Таким образом, на машине в западном регионе вы получаете разные результаты, когда читаете ресурс, когда читаете его в японской Windows.

К сожалению, в Windows используются разные кодовые страницы по умолчанию вместо использования однойглобальная кодировка, такая как UTF-8, но сейчас уже слишком поздно исправлять.Если вы скомпилируете все приложение как приложение Unicode (то есть вы будете использовать LoadStringW, а не LoadStringA), тогда вы сможете лучше справляться с не-ASCII-символами, такими как умные кавычки.

Если выВы не можете перейти в приложение Unicode, которое вы немного застряли.Вы не сможете обрабатывать не-ASCII-символы, такие как умные кавычки, во всем мире, поэтому придерживайтесь только ASCII-символов, таких как прямой апостроф ‹'›.

Символ U + 2019 отображается в строках вмой файл ресурсов, который я скопировал из Word

Да, Word имеет раздражающую функцию автозамены, которая заменяет все введенные апострофы умными кавычками.Это особенно нежелательно, когда вы имеете дело с кодом, где ‹'› сломает программу;но это также неправильно даже для простого старого английского, так как невозможно правильно угадать желаемое направление цитаты.(Например, один из апострофов в «фиш-н-фишках» будет неправильным.)

Я предлагаю отключить функцию автоматической замены с помощью умных кавычек.Если вы хотите умные цитаты, лучше вводить их сознательно.К сожалению, их неудобно набирать на большинстве раскладок клавиатуры, часто требуя непонятных последовательностей Alt + numpad.Лично я использую этот , чтобы перетаскивать их на клавиши Alt + [].

3 голосов
/ 15 июля 2011

Исторически сложилось, что одинарные и двойные кавычки бывают попарно, влево (открыто) и справа (закрыто).

В течение многих лет наборы компьютеров были ограничены и имели одну форму каждого.

Теперь, с появлением Unicode, доступны полные формы, но их поддержка все еще ограничена.Языки программирования по-прежнему используют простые формы, а полные формы все еще могут вызывать проблемы.

...