Навіщо тобі кодування?
Найменша одиниця зберігання в комп'ютері — байт (байт), і кількість символів, які можна представити байтом, обмежена — 1байт=8 біт, байт може представляти максимум 255 символів, і у світі існує багато мов, різні символи, які не можна представити байтом, тому символ представлення символів у Java потрібен, щоб розв'язати цю проблему кодування, один символ займає два байти, тому його потрібно кодувати між char і найменшим одиничним байтом. Навпаки — це декодування.
Насправді кодування та декодування — це завершений процес перекладу («переклад» легко зрозуміти), а різні методи кодування є словниками.
1. ASCII-код
Повна назва — American Standard Code for Information Interchange, який є найпоширенішою у світі однобайтовою системою кодування, яка переважно використовується для відображення сучасної англійської та інших західноєвропейських мов.
ASCII-код представлений 7 бітами, які можуть представляти лише 128 символів, а 0~31 — керуючі символи, такі як enter, backspace, delete тощо; 32~126 означає, що надруковані символи можна вводити через клавіатуру та відображати.
Серед них 48~57 — це від 0 до 9 десяти арабських цифр, 65~90 — 26 великих англійських літер, 97~122 — 26 малих англійських літер, а решта — це розділові знаки, операційні символи тощо, які можуть посилатися на таблицю стандартів ASCII для деталей.
2、ISO-8859-1
Це кодування є розширенням ASCII-кодування, але воно все ще однобайтове кодування і може представляти загалом лише 256 символів.
Оскільки ASCII може представляти лише 128 символів, дисплей не може бути повністю вираженийISO-8859-1 розширює ASCII-кодуванняДо коду ASCII додаються відповідні текстові символи західноєвропейських мов — грецької, тайської, арабської та івриту, і він є зворотно сумісним із кодуванням ASCII.
3、GB2312
Повна назва GB2312 — «Інформаційний технологічний китайський набір символів», що є двобайтовим кодуванням з діапазоном кодування від A1 до F7, де A1-A9 — це площа символів, що містить загалом 682 символи; B0-F7 — це область ієрогліфів, що містить 6763 ієрогліфи.
Повна назва — це китайський набір ієрогліфів для обміну інформацією, який був випущений Китаєм у 1980 році і переважно використовується для обробки китайських ієрогліфів у комп'ютерних системах. GB2312 переважно містить 6763 китайські ієрогліфи та 682 символи.
GB2312 охоплює більшість використання китайських ієрогліфів, але не може опрацювати спеціальні рідкісні символи, такі як давньокитайські, тому коди на кшталт GBK і GB18030 з'явилися пізніше.
4、GBK
Повна назва GBK — «Chinese Character Internal Code Extension Specification», яка, здається, розширює GB2312, її діапазон кодування — 8140-FEFE (без XX7F), загалом 23940 кодових бітів, що може представляти 21003 китайських ієрогліфів, а кодування сумісне з GB2312
GBK, повна назва Китайської внутрішньої специфікації коду, була сформульована у 1995 році. Вона переважно розширює GB2312 і додає більше китайських ієрогліфів, що містить загалом 21 003 китайських ієрогліфи.
GBK сумісний із кодуванням GB2312, що означає, що китайські ієрогліфи, закодовані в GB2312, можна декодувати нормально за допомогою GBK і вони не виглядатимуть спотвореними, але китайські ієрогліфи, закодовані GBK, не обов'язково декодуються GB2312.
5、GB18030
GB18030 повна назва — Chinese Character Internal Code Extension Specification, яка є останнім внутрішньою кодовою системою, випущеною у 2000 році та введеною в силу у 2001 році, включаючи мовні ієрогліфи більшості етнічних меншин Китаю, і містить понад 70 000 китайських ієрогліфів.
Він переважно використовує однобайтове, двобайтове та чотирибайтове кодування символів, і є назад сумісним з GB2312 та GBK, хоча є обов'язковим стандартом у нашій країні, але рідко застосовується у реальному виробництві, і найчастіше використовуються GBK та GB2312.
6.ЮНІКОД
Щоб їхня мова нормально відображалася на комп'ютері, кожна країна та регіон має власний код, тому ніхто не знає коди один одного, якщо кодів надто багато, на той час організація ISO запропонувала новий код під назвою UNICODE кодування для підтримки глобальних культур, символів і символів. Коли UNICODE був сформульований, проблема з об'ємною місткістю перестало, тому його спроєктували з фіксованим розміром на два байти, а всі символи були представлені у 16 бітах, включаючи англійські, які раніше займали лише 8 біт, що призводило до марної трати місця, і UNICODE довго не просувався і застосовувався.
7、UTF-16
Поява UTF-16 — це ISO для створення нового надмовного словника, через який усі мови світу можуть перекладати одна одну, можете уявити, наскільки складним і величезним є цей словник. UTF-16 використовує два байти для представлення формату конвертації Unicode (два байти — це 16 біт, тобто UTF-16) — це метод представлення фіксованої довжини, тобто будь-який символ може бути представлений у двох байтах. Це робить зображення персонажів дуже зручним. Однак є й недолік: значну частину символів можна представити в одному байті, але UTF-16 використовує два байти, що є марною тратою місця для зберігання. Існує ще один спосіб кодування — UTF-8.
UTF-16 — це специфічна реалізація UNICODE, 16 — це 16 біт, UTF-16 — це джерело, що визначає, як символи UNICODE зберігаються в комп'ютері, UTF-16 також використовує два байти для представлення будь-якого символу, що робить рядок операції дуже ефективним, що також є важливою причиною, чому java використовує UTF-16 як формат для зберігання символів у пам'яті.
UTF-16 підходить для використання між диском і пам'яттю, і перетворення символів і байтів між собою і між собою буде простішим і ефективнішим, але він не підходить для мережевої передачі, що може пошкодити потік байтів.
8、UTF-8
UTF-8 використовує технологію змінної довжини, де кожна область кодування має різну довжину коду, а різні типи символів можуть складатися з 1-6 байт.
Правила кодування для UTF-8 такі:
1) Якщо це 1 байт, а найбільший біт — 0, це означає, що це 1 ASCII-символ. Видно, що всі ASCII-кодування вже є UTF-8
2) Якщо це 1 байт, починаючи з 11, кількість послідовних 1 означає кількість байтів цього символу, наприклад: 110xxxxx означає, що це перший байт двобайтового символу UTF-8
3) Якщо це 1 байт, починаючи з 10, це означає, що це не перший байт, потрібно чекати на перший байт поточного символу.
Хоча UTF-16 дуже ефективний, це також найбільший недолік UNICODE, оскільки всі однобайтові символи мають враховувати два байти, а обсяг пам'яті подвоюється, що, очевидно, споживає ресурси і не відповідає поточній ситуації швидкого розвитку Інтернету. Отже, у UTF-8 це реалізація кодування символів змінної довжини в UNICODE, яке може використовувати 1~6 байтів фіксованої довжини для кодування символів UNICODE.
UTF-8 використовує однобайтове сховище для ASCII-символів, і якщо один символ пошкоджений, це не вплине на наступні, тому UTF-8 ідеально підходить для традиційних веб-кодувань і є одним із найпоширеніших кодування сьогодні.
Якщо ви хочете представити китайську мову, ефективність кодування UTF-8 вища за GBK і менша за UTF-16, тому це також найкращий метод кодування, окрім GBK. |