Должен ли исходный код быть сохранен в формате UTF-8 - PullRequest
33 голосов
/ 01 февраля 2010

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

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

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

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

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

Ответы [ 5 ]

25 голосов
/ 01 февраля 2010

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

Плюсы UTF-8

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

Минусы UTF-8

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

ASCII Pros

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

ASCII Минусы

  • limнабор символов ited
  • это не 1960-е годы

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

6 голосов
/ 01 февраля 2010

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

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

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

6 голосов
/ 01 февраля 2010

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

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

2 голосов
/ 01 февраля 2010

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

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

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

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

2 голосов
/ 01 февраля 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...