UTF-8 против кодовой страницы 1252 в Visual Studio 2008 для HTML и JavaScript, содержащей европейские символы - PullRequest
2 голосов
/ 14 июня 2009

Я разрабатывал синтаксический анализатор , который принимает JavaScript в качестве ввода и создает сжатую версию этого JavaScript в качестве вывода.

Сначала я обнаружил, что синтаксический анализатор не смог прочитать входной JavaScript. Я считаю, что это как-то связано с тем, что Visual Studio 2008 сохраняет свои файлы по умолчанию как UTF-8 . И при этом VS включает в себя пару скрытых символов в начале файла UTF-8 .

В качестве обходного пути я использовал Visual Studio для сохранения файла как кодовая страница 1252 . После этого мой парсер смог прочитать входной JavaScript.

Обратите внимание, что мне нужно использовать специальные европейские символы с акцентами.

Итак, вот мои вопросы:

  1. Должен ли я использовать кодовую страницу 1252 или UTF-8?
  2. Почему Visual Studio по умолчанию сохраняет файлы в формате UTF-8?
  3. Если я выберу сохранение файлов как 1252, это приведет к проблемам?
  4. Мне кажется, что Eclipse сохраняет файлы как кодовую страницу 1252 по умолчанию. Это звучит правильно?

Ответы [ 5 ]

9 голосов
/ 14 июня 2009

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

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

3 голосов
/ 14 июня 2009

utf-8 имеет подпись метки порядка байтов (BOM) в начале файла, которую некоторые редакторы и, очевидно, библиотеки не понимают ... http://en.wikipedia.org/wiki/Byte-order_mark

если вы можете обойти это, UTF-8 предпочтительнее сегодня всеми средствами. попробуйте удалить первые байты спецификации перед передачей кода JS этому анализатору или найдите опцию в вашей IDE, если она не может записать это

1252 не вызывает этой проблемы, и у вас не будет проблем с ней, но вы будете выводить свою сеть в устаревшем формате, сегодня я бы этого не делал, в Интернете было много беспорядка кодирования в прошлом с iso vs. win кодовыми страницами для разных языков ...

1 голос
/ 14 июня 2009

Использование 1252 вызовет проблемы?

Зависит от стран, в которых ваше приложение должно работать

Сверху моей головы, 1252 (или ISO 8859-1) будет работать в

  • Великобритания
  • Германия
  • Швейцария
  • Австрия
  • Италия
  • Франция
  • Нидерланды
  • Исландия
  • Испания

О, Википедия имеет более полный список: http://en.wikipedia.org/wiki/ISO/IEC_8859-1

Таким образом, вы можете использовать CP 1252, если ваше приложение используется только в указанных странах / языках.

1 голос
/ 14 июня 2009

Используйте UTF-8. 1252 не распространяется на всю Европу, поэтому в некоторых странах (в центральной Европе) вы должны использовать 1250 или, точнее, iso 8859-2. Так что единственный реальный вариант - это UTF-8.

0 голосов
/ 14 июня 2009

спецификация была в начале файла. ИМХО, вы должны использовать utf8, это очень актуально в наши дни.

...