Page 95 - 6105
P. 95
Щоб розібратися з цим, звернемося до внутрішнього представлення рядків в
JavaScript. Всі рядки мають внутрішню систему кодування Юнікод.
Неважливо, якою мовою написана сторінка, чи знаходиться вона в windows-
1251 або utf-8. Усередині JavaScript-інтерпретатора всі рядки приводяться до
єдиного «Юнікодного» виду. Кожному символу відповідає свій код.
Є метод для отримання символу за його кодом:
String.fromCharCode (code) – повертає символ за кодом code
alert (String.fromCharCode (тисячі сімдесят два)); //
'а'
І метод для отримання цифрового коду з символу:
str.charCodeAt (pos) – повертає код символу на позиції pos. Відлік позиції
починається з нуля.
alert ( "абрикос" .charCodeAt (0)); // 1072, код 'а'
Тепер повернемося до прикладів вище. Чому порівняння 'е'> 'я' і 'а'> 'Я'
дають такий дивний результат? Справа в тому, що символи порівнюються не за
алфавітом, а за кодом. У кого код більше - той і більше. У юнікоді є багато різних
символів. Кириличним буквам відповідає тільки невелика частина з них.
Виведемо відрізок символів юнікоду з кодами від 1034 до 1113:
var str = '';
for (var i = 1034; i <= 1113; i ++) {
str + = String.fromCharCode (i);
}
alert (str);
Результат:
ЊЋЌ ЎЏАБВГДЕЖЗІЙКЛМНОПРСТУФХЦЧШЩ'ИЬЕЮЯабвгдежзійклм
нопрстуфхцчшщ'иьеюя ёђѓєѕіїјљ
Отже, можна зробити висновок, що:
малі літери йдуть після великої, тому вони завжди більше;
94