Должен ли исходный код быть сохранен в формате UTF-8

Насколько важно сохранить исходный код в формате UTF-8?

Eclipse в Windows по умолчанию использует кодировку CP1252. Формат CP1251 означает, что можно сохранить не символы UTF-8, и я видел, как это происходит, если вы копируете и вставляете документ Word для комментария.

Причина, по которой я спрашиваю, состоит в том, что я по привычке настроил кодировку Maven в формате UTF-8, и недавно она обнаружила несколько не отображаемых ошибок.

(обновление) Пожалуйста, добавьте какие-либо причины для этого и почему, есть некоторые распространенные ошибки, о которых следует знать?

(обновление) Какова ваша цель? Чтобы найти наилучшую практику, спросите, почему мы должны использовать UTF-8, у меня хороший ответ, а сейчас нет.

5 ответов

Решение

Какова ваша цель? Соотнесите свои потребности с преимуществами и недостатками этого выбора.

UTF-8 Плюсы

  • позволяет использовать все символьные литералы без \uHHHH побег

UTF-8 Минусы

  • использование не-ASCII символьных литералов без \uHHHH увеличивает риск порчи персонажа
    • могут возникнуть проблемы со шрифтом и клавиатурой
    • необходимо документировать и обеспечивать использование UTF-8 во всех инструментах (редакторы, скрипты компиляторов, инструменты сравнения)
  • остерегайтесь знака порядка байтов

ASCII Pros

  • сопоставления символов / байтов используются многими кодировками
    • делает исходные файлы очень переносимыми
    • часто устраняет необходимость указания метаданных кодирования (поскольку файлы были бы идентичны, если бы они были перекодированы как UTF-8, Windows-1252, ISO 8859-1 и большинство вещей, кроме UTF-16 и / или EBCDIC)

ASCII Минусы

  • ограниченный набор символов
  • это не 1960-е

Примечание: ASCII является 7-разрядным, не "расширенным" и его не следует путать с Windows-1252, ISO 8859-1 или чем-то еще.

Важно, по крайней мере, что вы должны соответствовать кодировке, используемой для избежания сельди. Таким образом, нет, X здесь, Y там и Z в другом месте. Сохраните исходный код в кодировке X. Установите ввод кода в кодировку X. Установите вывод кода в кодировку X. Установите FTP-передачу на основе символов в кодировку X. Etcetera.

Настоящее время UTF-8 Это хороший выбор, поскольку он охватывает каждого персонажа, о котором знает человеческий мир, и поддерживается практически везде. Так что да, я бы также установил кодировку рабочей области. Я тоже так использую.

По умолчанию Eclipse использует кодировку платформы по умолчанию - плохое решение. Я посчитал необходимым изменить значение по умолчанию на UTF-8 вскоре после его установки, потому что некоторые из моих существующих исходных файлов использовали его (вероятно, из фрагментов, скопированных / вставленных с веб-страниц).

Для спецификаций языка Java и API требуется поддержка UTF-8, так что вы, безусловно, в порядке со стандартными инструментами, и я давно видел достойный редактор, который не поддерживает UTF-8.

Даже в проектах, в которых используется JNI, ваши источники C обычно будут в US-ASCII, который является подмножеством UTF-8, поэтому наличие обоих открытых в одной IDE не будет проблемой.

Да, если ваш компилятор / интерпретатор не может работать с файлами UTF-8, это определенно верный путь.

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

1) Выберите кодировку, которую поддерживает ваша цепочка инструментов. Это намного проще, чем раньше. Даже в недавней памяти многие компиляторы и языки в основном поддерживали только ASCII, что более или менее заставляло разработчиков программировать на западноевропейских языках. В наши дни многие из новых языков поддерживают другие кодировки, и почти все приличные редакторы и IDE поддерживают чрезвычайно длинный список кодировок. Тем не менее... есть достаточно разногласий, которые вам нужно перепроверить, прежде чем вы остановитесь на кодировке.

2) Выберите кодировку, которая поддерживает столько алфавитов, сколько вы хотите использовать. Я считаю это второстепенным приоритетом, потому что, честно говоря, если ваши инструменты не поддерживают его, на самом деле не имеет значения, нравится ли вам кодировка лучше или нет.

UTF-8 - отличный выбор во многих обстоятельствах современного мира. Это уродливый, не элегантный формат, но он решает целый ряд проблем (а именно, связанных с унаследованным кодом), которые нарушают другие кодировки, и кажется, что он становится все более и более де-факто стандартом кодировок символов. Он поддерживает каждый основной алфавит, черт возьми, почти каждый редактор на планете поддерживает его, и целый ряд языков / компиляторов также поддерживает его. Но, как я уже упоминал выше, унаследованных урезок достаточно, чтобы дважды проверить цепочку инструментов, прежде чем окончательно остановиться на ней.

Другие вопросы по тегам