Я не могу понять, почему следующие два файла дают разные хэши (SHA1, CRC32, SHA384 и т.д.):

https://cdn.jsdelivr.net/npm/jsonify-error@1.2.1/dist/jsonify-error.js

https://cdn.jsdelivr.net/npm/jsonify-error@1.2.2/dist/jsonify-error.js

Пока я пробовал несколько утилит diff, но все они утверждают, что файлы идентичны.

Я загрузил оба файла и проверил их с помощью Sublime Text 3 и Visual Studio Code, оба из которых выглядят как UTF-8, CRLF, но как только я открываю первый и нажимаю на нем Ctrl+S (ничего не меняя!) его хэш изменяется так же, как и второй.

Что здесь происходит?

РЕДАКТИРОВАТЬ, чтобы уточнить: я хочу знать, что отличается между файлами. Я знаю, что это что-то с пробельными символами или окончаниями строк, но что? Какая линия? Куда? Какой персонаж?

2 ответа2

2

Строка 1 в версии 1.2.1 завершилась как linux EOL, в то время как версия 1.2.2 на той же строке имеет конец строки windows.
(В качестве разделителя строк в Linux используется символ 0x0A, а в окнах - 0x0D, 0x0A)

То же самое со строками: 3, 4, 59, 60 и 61.

Инструмент, используемый для выявления проблемы - это WinMerge.

1

Посмотрите в шестнадцатеричном редакторе: один файл использует 0x0a (LF), чтобы отметить конец строки, другой использует 0x0d0a (CR/LF). При необходимости используйте такой инструмент, как Notepad++, чтобы изменить файлы на то же соглашение о переводе строки .

Шестнадцатеричный просмотр 2 файлов

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .