Сделайте следующее изменение в файле jquery.validationengine-en.js
и обновите встроенную проверку dd / mm / yyyy, включив високосный год:
"date": {
// Check if date is valid by leap year
"func": function (field) {
//var pattern = new RegExp(/^(\d{4})[\/\-\.](0?[1-9]|1[012])[\/\-\.](0?[1-9]|[12][0-9]|3[01])$/);
var pattern = new RegExp(/^(0?[1-9]|[12][0-9]|3[01])[\/\-\.](0?[1-9]|1[012])[\/\-\.](\d{4})$/);
var match = pattern.exec(field.val());
if (match == null)
return false;
//var year = match[1];
//var month = match[2]*1;
//var day = match[3]*1;
var year = match[3];
var month = match[2]*1;
var day = match[1]*1;
var date = new Date(year, month - 1, day); // because months starts from 0.
return (date.getFullYear() == year && date.getMonth() == (month - 1) && date.getDate() == day);
},
"alertText": "* Invalid date, must be in DD-MM-YYYY format"
Спецификация UTF-8 - это последовательность байтов в начале текстового потока (EF BB BF), которая позволяет читателю более надежно угадать файл в кодировке UTF-8.
Обычно спецификация используется для обозначения порядка байтов кодирования, но поскольку порядок байтов не имеет отношения к UTF-8, в спецификации нет необходимости.
Согласно стандарту Unicode , спецификация для файлов UTF-8 не рекомендуется :
2.6 Схемы кодирования
... Использование спецификации не является ни тем, ни другим не требуется и не рекомендуется для UTF-8, но может встречаться в контекстах, где данные UTF-8 конвертируются из других форм кодирования, которые используют BOM, или где BOM используется как UTF-8 подпись. См. Подраздел «Знак порядка байтов» в Раздел 16.8, Специальные , для получения дополнительной информации.
Вот мой опыт с Visual Studio, SourceTree и запросами получения по запросу Битоприемника, который давал мне некоторые проблемы:
Так оказывается, что BOM с подписью будет включать красный точечный символ в каждый файл при рассмотрении запроса получения по запросу (может быть довольно раздражающим).
, Если Вы толпитесь на нем, это покажет символ как "ufeff", но оказывается, что sourcetree не делает показывает эти типы bytemarks, таким образом, это, скорее всего, закончится в Ваших запросах получения по запросу, которые должны быть в порядке, потому что это - то, как VS, 2017 кодирует новые файлы теперь, поэтому возможно, битоприемник, должен проигнорировать это или заставить его показать в другом отношении, больше информации здесь:
С http://en.wikipedia.org/wiki/Byte-order_mark:
Знак заказа байтов (BOM) является уникодом. символ, используемый для сигнала эндианность (порядок байт) текстового файла или ручей. Его точка кода - U+FEFF. Использование BOM является необязательным, и, если используется, должен появиться в начале текста ручей. Помимо его специфического использования в качестве индикатор порядка байтов, запоминающее устройство символ может также указывать на то, какой из несколько представлений Юникода текст закодирован.
Постоянное использование BOM в вашем файле гарантирует, что он всегда откроется корректно в редакторе, поддерживающем UTF-8 и BOM.
Моя реальная проблема с отсутствием BOM заключается в следующем. Предположим, у нас есть файл, который содержит:
abc
Без BOM он открывается как ANSI в большинстве редакторов. Поэтому другой пользователь этого файла открывает его и добавляет некоторые нативные символы, например:
abg-αβγ
Oops.... Теперь файл все еще в ANSI и угадайте, что "αβγ" занимает не 6 байт, а 3. Это не UTF-8, и это вызывает другие проблемы позже в цепочке разработки.
UTF-8 без запоминающего устройства не имеет запоминающего устройства, что не делает его лучше, чем UTF-8 с запоминающим устройством, за исключением случаев, когда потребителю файла необходимо знать (или было бы полезно знать), является ли файл в кодировке UTF-8 или нет.
BOM обычно полезен для определения эндианности кодировки, которая не требуется для большинства случаев использования.
Кроме того, BOM может быть ненужным шумом/краской для тех потребителей, которые не знают или не заботятся об этом, и может привести к путанице пользователей.
Цитируется внизу страницы Википедии в спецификации: http://en.wikipedia.org/wiki/Byte-order_mark#cite_note- 2
«Использование спецификации не требуется и не рекомендуется для UTF-8, но может встречаться в контекстах, где данные UTF-8 преобразуются из других форм кодирования, которые используют спецификацию, или где спецификация используется как UTF- 8 подпись "
В других отличных ответах уже было сказано, что:
EF BB BF
Но, как дополнительная информация к этому, спецификация для UTF-8 может быть хорошим способом «понюхать», если строка была закодирована в UTF-8 ... Или это может быть допустимая строка в любой другой кодировке. ..
Например, данные [EF BB BF 41 42 43] могут быть следующими:
Таким образом, хотя может быть круто распознать кодировку содержимого файла по первым байтам, вы не должны полагаться на это, как показано в примере выше
Кодировки нужно знать, а не угадывать.
Чем отличаются UTF-8 и UTF-8 без спецификации?
Краткий ответ: в UTF-8 спецификация кодируется как байты EF BB BF
в начале файла.
Длинный ответ:
Первоначально ожидалось, что Unicode будет закодирован в UTF-16 / UCS-2. Спецификация была разработана для этой формы кодирования. Когда у вас есть 2-байтовые блоки кода, необходимо указать, в каком порядке находятся эти два байта, и обычным соглашением для этого является включение символа U + FEFF в качестве «метки порядка байтов» в начале данных. Символ U + FFFE не назначается навсегда, поэтому его присутствие можно использовать для обнаружения неправильного порядка байтов.
UTF-8 имеет один и тот же порядок байтов независимо от порядка байтов платформы, поэтому отметка порядка байтов не требуется. Однако это может произойти (как последовательность байтов EF BB FF
) в данных, которые были преобразованы в UTF-8 из UTF-16, или как «подпись», чтобы указать, что данные относятся к UTF-8.
Что лучше?
Без. Как ответил Мартин Кот, стандарт Unicode не рекомендует этого. Это вызывает проблемы с программным обеспечением, не поддерживающим спецификации.
Лучший способ определить, является ли файл UTF-8, - это выполнить проверку достоверности. UTF-8 имеет строгие правила относительно того, какие последовательности байтов допустимы, поэтому вероятность ложного срабатывания незначительна.Если последовательность байтов выглядит как UTF-8, вероятно, так оно и есть.