Как изменить кодировку js файла
Обновлено: 07.07.2024
программа javascript использует Unicode Написано в наборе символов. Unicode да ASCII с Latin-1 Расширенный набор и поддерживает почти все языки на планете. ECMAScript3 JavaScript должен поддерживаться Unicode2.1 И последующие версии, ECMAScript5 Запросить поддержку Unicode3 И последующие версии. Следовательно, все написанные нами программы javascript закодированы в Unicode.
Его можно использовать для представления любого символа в стандарте Unicode и его кодировки. Первый байт все еще совместим с ASCII , Это делает ненужным исходное программное обеспечение, обрабатывающее символы ASCII, или вносит лишь небольшие изменения, вы можете продолжать его использовать. следовательно, Постепенно он стал предпочтительной кодировкой для электронных писем, веб-страниц и других приложений, которые хранят или отправляют текст. 。
Большинство веб-сайтов в настоящее время используют кодировку UTF-8.
Преобразование строки в кодировке Unicode, сгенерированной javascript, в строку в кодировке UTF-8
Сценарии приложений, упомянутые в заголовке, очень распространены. Например, при отправке части двоичного файла на сервер сервер оговаривает, что кодирование двоичного содержимого должно быть UTF-8. В этом случае мы должны запрограммировать строку Unicode JavaScript в строку в кодировке UTF-8.
Метод преобразования
Перед преобразованием мы должны понять, что структура кодирования Unicode фиксирована.
Если вы не верите, вы можете попробовать метод charCodeAt для String, чтобы узнать, сколько байтов занимает возвращенный charCode.
Английский занимает 1 символ, китайские символы - 2 символа
Однако длина структуры кодирования UTF-8 составляет По размеру одного символа Определить длину.
Размер одного символа занимает несколько байтов ниже. Максимальная длина одного символа Юникода после кодирования составляет 6 байтов.
Пожалуйста, смотрите изображение для деталей:
Поскольку код Unicode для английских и английских символов 0 - 127 , Таким образом, длина и байты английского языка в Unicode и UTF-8 одинаковы, занимая всего 1 байт. Вот почему UTF8 - это надмножество Unicode !
Теперь давайте снова обсудим китайские иероглифы, потому что диапазон кода Юникода китайских символов 0x2e80 - 0x9fff , Таким образом, длина китайских символов в UTF8 составляет до 3 байтов.
Так как же китайские иероглифы преобразовать 2 байта Unicode в 3 байта UTF8?
Предположим, мне нужно преобразовать китайский символ " " в кодировку UTF-8.
1. Получите значение Unicode для китайских иероглифов.
2. Оцените длину UTF8 по размеру.
3. Дополнение
Теперь, когда мы знаем, что китайскому иероглифу « » нужно 3 байта, как нам получить эти 3 байта?
Это должно быть разработано для дополнения, конкретная логика дополнения выглядит следующим образом:
Хорошо, я знаю, что вы не понимаете эту картинку, поэтому позвольте мне рассказать об этом!
Конкретный дополнительный код выглядит следующим образом: «x» представляет вакансию и используется для дополнения.
0xxxxxxx
110xxxxx 10xxxxxx
1110xxxx 10xxxxxx 10xxxxxx
11110xxx 10xxxxxx 10xxxxxx 10xxxxxx
111110xx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
1111110x 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx 10xxxxxx
предупреждение: вы его нашли? Число единиц перед первым байтом дополнительного кода указывает, сколько байтов занимает вся кодировка UTF-8! Декодирование UTF-8 в Unicode заключается в использовании этой функции
Начнем с простого примера. Преобразуйте английскую букву «A» в кодировку UTF8.
1. charCode буквы "A" - 65.
2. 65 находится в диапазоне 0-127, поэтому "A" занимает один байт.
3. Дополнение байта в UTF8 - 0xxxxxxx, где x представляет собой пробел и используется для дополнения.
4. Преобразуйте 65 в двоичное, чтобы получить 1000001.
5. Добавьте 1000001 к 1xxxxxxx в порядке от начала до конца, чтобы получить 01000001.
6. Преобразуйте 11000001 в строку и получите "А".
7. Наконец, "A" - это "A" после кодировки UTF8.
С помощью этого небольшого примера мы снова проверили UTF-8 - это надмножество Unicode !
Хорошо, давайте теперь вернемся к китайскому иероглифу « », у нас есть charCode « » как 20013, а двоичный код 01001110 00101101 . подробности следующим образом:
Затем мы следуем методу заполнения «А», описанному выше, чтобы заполнить «среднюю» позицию.
будем 01001110 00101101 По порядку спереди назад 1110xxxx 10xxxxxx 10xxxxxx На. Получить 11100100 10111000 10101101 .
4. Получите контент в кодировке UTF8.
Выполнив описанные выше шаги, мы получили три байта UTF8 "medium", 11100100 10111000 10101101 。
Преобразуем каждый байт в шестнадцатеричный и получаем 0xE4 0xB8 0xAD ;
Тогда это 0xE4 0xB8 0xAD Вот и получилась кодировка UTF8.
Мы используем буфер nodejs, чтобы убедиться, что он правильный.
Поскольку в шестнадцатеричной системе регистр не учитывается, рассчитываете ли вы ее вместе с нами? 0xE4 0xB8 0xAD Точно так же.
Запишите приведенную выше логику кодирования в функцию.
Другой способ разобрать китайский, чтобы получить байт-код UTF8
Другой более простой метод преобразования китайского в байт-код UTF8 относительно прост. Браузер также предоставляет метод, и все использовали этот метод. Что это? Просто encodeURI . конечно, encodeURIComponent это тоже нормально.
Правильно, это метод. Итак, как этот метод преобразует китайский в кодировке Unicode в байт-код UTF8?
Вы нашли экранированную строку? И содержание этой строки такое же, как и байт-код, который я получил выше.
Ниже мы будем %E4%B8%AD Преобразуется в числовой массив.
Это так просто, никак
В чем принцип этого простого метода?
Здесь это задействовано URI средний querystring Проблема кодирования. Поскольку согласно правилам, строка запроса в URI должна передаваться в соответствии с кодировкой UTF8, а JavaScript - это Unicode, поэтому браузер предоставляет нам метод, который encodeURI / encodeURIComponent метод. Этот метод будет говорить Неанглийские символы (Подумайте, почему неанглийские символы?) Сначала преобразовали в байт-код UTF8, а затем добавили% впереди для сращивания, поэтому мы будем использовать китайские символы "в" Получите это при побеге "%E4%B8%AD" .
Ну вот принцип, больше ничего нет.
Однако у этого метода есть недостаток: Только экранируйте неанглийские символы , Поэтому, когда нам нужно отформатировать английские символы в кодировке UTF8, этот метод не соответствует нашим потребностям, нам также нужно дополнительно экранировать английские символы.
Что мне делать, если я хочу разобрать его? использовать decodeURI / decodeURIComponent Вот и все.
Что ж, эта статья познакомит вас с кодировкой UTF8.
Надеюсь помочь вам понять принцип кодировки UTF-8.
Читайте также: