2015-08-05 3 views
1

В JavaScript мир'Исходный код кодировки' VS 'Execution кодировок'

я узнал, что Javascript исходный код кодировки обычно UTF-8 (но не всегда).

Я узнал, что Javascript (исполнение) charset is UTF-16.

Как интерпретировать эти два термина?

Примечание: Ответ может быть дан язык агностик-союзник, взяв другой язык, как java

ответ

1

Довольно хорошо самый исходный код, написанный на UTF-8, или должно быть. Поскольку исходный код в основном используется на английском языке, с использованием символов, совместимых с ASCII, и utf-8 является наиболее эффективным в этом диапазоне символов, есть большое преимущество. В любом случае он стал стандартом де-факто.

JavaScript был разработан до того, как остальной мир установился на utf-8, поэтому он следует практике Java использования utf-16 для всех строк, что было довольно перспективным в то время. Это означает, что все строки, закодированные в источнике или полученные другим способом, будут (повторно) закодированы в utf-16.

По большей части это неважно. Исходный код для людей, а набор символов исполнения - для машин. Однако, тот факт, имеет две небольшие проблемы:

  • JavaScript строки могут тратить много места, если ваши строки в основном диапазоне ASCII (что они будут на английском языке, или даже на других языках, которые используют пробелы).
  • как utf-8, utf-16 также является переменной шириной, хотя большинство символов на большинстве языков соответствуют нормальным 2 байтам; однако JavaScript может неправильно рассчитать длину строки, если некоторые из символов расширяются до 4 байтов.

Помимо вопросов, кодирование которых лучше подходит для конкретного человеческого языка, нет другого преимущества одного над другим. Если JavaScript был разработан совсем недавно, вероятно, он использовал бы кодировку utf-8 для строк.

Смежные вопросы