Elementor Header #8

17. Кодировка

Кодировка символов — это способ представления текстовых данных в цифровом виде. Понимание кодировки важно для работы с текстом, чтобы обеспечить корректное отображение и манипулирование строками. В этом уроке мы рассмотрим основные концепции кодировки символов, такие как ASCII и Unicode, и их применение в JavaScript.

Основные концепции

ASCII (American Standard Code for Information Interchange):

  • Представляет символы с использованием 7-битных чисел (128 символов).
  • Включает основные символы, такие как латинские буквы, цифры и некоторые специальные символы.
				
					console.log('A'.charCodeAt(0)); // Output: 65
console.log(String.fromCharCode(65)); // Output: 'A'

				
			

Unicode:

  • Стандарт, который охватывает большинство письменных систем мира.
  • Использует 16-битные и более длинные кодовые единицы для представления символов.
  • Поддерживает множество символов, включая специальные символы, эмодзи и символы из разных языков.
 
				
					console.log('你'.charCodeAt(0)); // Output: 20320
console.log(String.fromCharCode(20320)); // Output: '你'

				
			

Примеры работы с кодировками в JavaScript

Получение Unicode-кода символа:

				
					let char = 'A';
let code = char.charCodeAt(0);
console.log(code); // Output: 65

				
			

Создание строки из Unicode-кода:

				
					let code = 65;
let char = String.fromCharCode(code);
console.log(char); // Output: 'A'

				
			

Работа с символами из различных кодировок:

				
					let chineseChar = '你';
let code = chineseChar.charCodeAt(0);
console.log(code); // Output: 20320

let emoji = '😊';
let emojiCode = emoji.codePointAt(0);
console.log(emojiCode); // Output: 128522

				
			

Создание строки из Unicode-кода (поддержка больших кодов):

				
					let emojiCode = 128522;
let emoji = String.fromCodePoint(emojiCode);
console.log(emoji); // Output: '😊'

				
			

Распространенные ошибки

Некорректное использование методов для работы с символами с высокой кодовой точкой:

  • charCodeAt и fromCharCode работают только с 16-битными кодами. Для символов с кодами выше 65535 используйте codePointAt и fromCodePoint.
				
					let highCode = '😊'.charCodeAt(0);
console.log(highCode); // Output: 55357 (некорректный результат)

let correctHighCode = '😊'.codePointAt(0);
console.log(correctHighCode); // Output: 128522 (корректный результат)

				
			

Игнорирование кодировки при работе с внешними данными:

  • При работе с данными из разных источников, важно учитывать их кодировку, чтобы избежать проблем с отображением и обработкой текста.

Заключение

Понимание кодировок символов и методов работы с ними в JavaScript позволяет корректно обрабатывать текстовые данные, поддерживая различные языки и специальные символы. Это особенно важно при работе с международными проектами и при взаимодействии с внешними источниками данных.

Тестовое задание

  1. Напишите код, который выводит Unicode-коды всех символов в строке «Hello, 世界!».

  2. Создайте строку из набора Unicode-кодов: 72, 101, 108, 108, 111 (должна получиться строка «Hello»).

  3. Напишите код, который корректно работает с эмодзи, получая его код и создавая строку из этого кода.

Пример решения:

				
					// Задание 1
let str = "Hello, 世界!";
for (let i = 0; i < str.length; i++) {
  console.log(`${str[i]}: ${str.codePointAt(i)}`);
}

// Задание 2
let codes = [72, 101, 108, 108, 111];
let helloStr = String.fromCharCode(...codes);
console.log(helloStr); // Output: Hello

// Задание 3
let emoji = '😊';
let emojiCode = emoji.codePointAt(0);
console.log(emojiCode); // Output: 128522

let newEmoji = String.fromCodePoint(emojiCode);
console.log(newEmoji); // Output: 😊

				
			

Этот урок поможет вам лучше понять, как использовать кодировки символов в JavaScript для работы с текстом и избежать распространенных ошибок.

logo