Курсивные кавычки и тире ломают код: как их выпрямить
Типографские кавычки, typographic-апострофы, среднее и длинное тире и неразрывные пробелы выглядят как обычные символы, но компьютер воспринимает их как другие знаки. Код, CSV-файлы, формулы в таблицах и командная строка ожидают обычные. Вставленная кавычка перестаёт быть границей строки, двойной дефис в флаге превращается в тире, а неразрывный пробел может помешать программе прочитать строку. Выпрямите символы перед вставкой в код, а потом проверьте результат там, где он будет работать.
Исправление вставленного текстаВ вставленном тексте лишние переносыСделать бесплатноОткуда берутся эти символы
Текстовые редакторы и многие почтовые программы заменяют прямые кавычки типографскими, пока вы печатаете. Это называется «умные кавычки». Word может также превратить два дефиса в тире. Веб-страницы и некоторые редакторы вставляют неразрывные пробелы, U+00A0, которые не дают двум словам разорваться на разные строки. Эти символы правильны для типографики, поэтому они и появляются. Для любой программы, которая читает текст, они неверны.
Что ломается и где
| Где | Что идёт не так |
|---|---|
| Исходный код | Типографские кавычки не работают как ограничители строк, и многие языки отвергают типографскую кавычку или неразрывный пробел вне строки |
| Команды оболочки | Тире, введённое как среднее тире, не является признаком опции, поэтому программа видит неизвестный аргумент |
| CSV-файлы | Парсеры заключают поля в прямые двойные кавычки, поэтому типографские кавычки не защищают запятую внутри поля |
| Формулы в таблицах | Типографские кавычки становятся частью текста, или формула выдаёт ошибку |
| JSON | Типографские кавычки не являются допустимыми ограничителями строк, поэтому парсер завершается с ошибкой |
Правила кавычек, которым следуют CSV-файлы, описаны в руководстве по переводу CSV в JSON.
Выпрямите их в fixmint
Три инструмента покрывают типичные случаи, и каждый обрабатывает свой набор символов.
- Типографские кавычки. Откройте исправление вставленного текста и отметьте «Выпрямить типографские кавычки». Инструмент заменяет одинарные типографские кавычки и апострофы на прямую одинарную кавычку, а двойные типографские кавычки на прямые двойные. Тире он не трогает. Остальные опции, например обрезка строк и сжатие повторяющихся пробелов, включены по умолчанию.
- Тире, многоточия и необычные пробелы. Откройте удаление невидимых символов и отметьте «Также заменить типографские кавычки, среднее/длинное тире и … на обычный ASCII». Тире превращаются в дефис, а многоточие в три точки. Неразрывные пробелы по умолчанию становятся обычными. Режим с пометками показывает, где сделана каждая замена.
- Один символ или фраза. Откройте поиск и замену, оставьте выключенным режим регулярных выражений и введите символ в поле «Найти», а его обычный вариант в поле «Заменить». Когда регулярные выражения выключены, поле «Найти» воспринимается буквально, поэтому типографская кавычка совпадает только сама с собой.
Вот вторая утилита, применённая к типичной вставке:
| До | После |
|---|---|
| “Привет,” сказала она. | "Привет," сказала она. |
| It’s done. | It's done. |
| —verbose | -verbose |
Последняя строка показывает ограничение. Каждое тире становится одним дефисом, поэтому двойной дефис, который текстовый редактор объединил в одно длинное тире, возвращается как один дефис. Флаги вроде --verbose после преобразования исправьте вручную.
Вставьте результат туда, где он будет работать, и проверьте его там. Выпрямление не меняет смысл текста, поэтому успешный запуск и есть настоящая проверка.
Проверьте результат
Ещё раз прогоните выпрямленный текст через удаление невидимых символов и посмотрите режим с пометками. Любая оставшаяся пометка означает символ, который первый проход не охватил, например пробел нулевой ширины или необычный пробел. Режим с пометками показывает, где находится каждый такой символ, и вы можете исправить его на месте.
Символы почти неотличимы на экране, поэтому визуальная проверка их пропускает. Прямая и типографская кавычки различаются по форме лишь немного, а среднее тире во многих шрифтах выглядит как дефис. Проверяйте текст, а не глаза.
Когда не нужно выпрямлять
Оставляйте типографские кавычки и тире в тексте, который люди читают в печати или на веб-странице. Там это правильная типографика. Выпрямляйте только текст, который пойдёт в код, CSV, формулу или команду. Для текста, который вы пишете в текстовом редакторе, отключите опцию умных кавычек, если позже планируете вставить его в код.
Особые случаи
- Смешанные кавычки. Документ может содержать и типографские, и прямые кавычки. Выполните выпрямление один раз, затем поищите в результате оставшиеся, потому что источники отличаются.
- Апострофы в словах. Типографский апостроф в сокращении становится прямым, что ожидает большинство кода. Проверьте все сокращения внутри строк.
- Сохраните исходник. Выпрямление необратимо: прямая кавычка не скажет, из какой типографской она получилась. Сохраните исходный документ и вносите изменения в копию.
- Тире в предложениях. Длинное тире, которым отбивают фразу, становится дефисом, и «подожди — стоп» превращается в «подожди - стоп». Если текст предназначен для чтения, а не для кода, перепечатайте его вручную.
- Невидимые символы. В вставленном тексте могут быть и пробелы нулевой ширины. Они не являются кавычками, но ломают код похожим образом. О них рассказано в руководстве по скрытым символам в тексте.
Переведено с помощью ИИ с Английский оригинал.
Комментарии
Комментариев пока нет. Будьте первым.


