Просто, чтобы добавить к путанице, я работал над простым текстовым редактором, использующим элемент TextArea на HTML-странице в браузере. В ожидании проблем совместимости в отношении CR / LF я написал код для проверки платформы и использовал любое соглашение о переводе строки, применимое к платформе.
Однако я обнаружил кое-что интересное при проверке реальных символов, содержащихся в TextArea, с помощью небольшой функции JavaScript, которая генерирует шестнадцатеричные данные, соответствующие символам.
Для теста я набрал следующий текст:
Hello, World [enter]
До свидания, Жестокий мир [введите]
Когда я исследовал текстовые данные, полученная последовательность байтов была такой:
48 65 6c 6c 6f 2c 20 57 6f 72 6c 64 0a 47 6f 6f 64 62 79 65 2c 20 43 72 75 65 6c 20 57 6f 72 6c 64 0a
Теперь большинство людей, которые смотрят на это и видят 0a, но не 0d байт, подумают, что этот вывод был получен на платформе Unix / Linux. Но вот в чем проблема: эту последовательность я получил в Google Chrome на 64-битной Windows 7.
Итак, если вы используете элемент TextArea и изучаете текст, ПРОВЕРЬТЕ вывод, как я делал выше, чтобы убедиться, какие фактические байты символов возвращаются из вашей TextArea. Я еще не выяснил, отличается ли это на других платформах или в других браузерах, но стоит иметь в виду, если вы выполняете обработку текста с помощью JavaScript и вам нужно сделать эту платформу независимой от обработки текста.
Соглашения, описанные в постах выше, применяются к выводу console , но элементы HTML, по-видимому, соответствуют соглашению UNIX / Linux. Если кто-то не обнаружит иное на другой платформе / в браузере.