UTF-8 против кодовой страницы 1252 в Visual Studio 2008 для HTML и JavaScript, которая включает европейские символы

Я разрабатываю синтаксический анализатор, который принимает на вход 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. Это звучит правильно?

person mark smith    schedule 14.06.2009    source источник


Ответы (5)


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

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

person Michael Borgwardt    schedule 14.06.2009
comment
Вы можете использовать опцию Сохранить с кодировкой в ​​диалоговом окне сохранения, а затем явно выбрать UTF-8 без подписи. - person Joey; 14.06.2009
comment
Да, спасибо, ребята, я сохранил его без подписи ... и, похоже, он сработал ... Кто-нибудь может сказать сохранить / создать по умолчанию UTF-8 без подписи в vs 2008? - person mark smith; 14.06.2009

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

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

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

person zappan    schedule 14.06.2009

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

person smok1    schedule 14.06.2009

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

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

С моей точки зрения, 1252 (или ISO 8859-1) будет работать в

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

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

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

person jms    schedule 14.06.2009
comment
В ISO 8859-1 есть несколько проблем с редкими французскими словами, поэтому был создан ISO 8859-15. - person Richard; 14.06.2009
comment
В Википедии: ISO / IEC 8859-1 , ISO / IEC 8859-15 и Windows-1252. - person DavidRR; 06.09.2014

Спецификация была в начале файла. IMHO вы должны использовать utf8, он очень актуален в настоящее время.

person erenon    schedule 14.06.2009