Подтвердить что ты не робот

Правильный одиночный апостроф против апострофа?

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

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

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

4b9b3361

Ответ 1

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

спорно!

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

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

"Он сказал:" Его фишки рыбы... "

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

"Он сказал:" Это рыбу "n" фишки... "

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

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

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

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

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

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

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

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

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

Ответ 2

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

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

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