CodeKitHub
Текстові інструменти

Лічильник байтів — кількість символів проти розміру в байтах

Останнє оновлення:

Введіть або вставте текст і в реальному часі побачте, скільки символів він містить порівняно з тим, скільки байтів він фактично займає в кодуваннях UTF-8 та UTF-16 — ці два числа починають розходитися, щойно в тексті з'являються символи поза ASCII (діакритичні знаки, ієрогліфи CJK, емодзі).

0
Characters
0
UTF-8 bytes
0
UTF-16 bytes

Що це за інструмент?

Для звичайного тексту ASCII (англійських літер, цифр, базової пунктуації) кількість символів і кількість байтів збігаються — кожен символ у кодуванні UTF-8 займає рівно один байт. Щойно текст містить літери з діакритичними знаками, китайські/японські/корейські ієрогліфи, кирилицю, арабське письмо, емодзі чи більшість інших символів поза ASCII, це перестає бути правдою: один символ може займати 2, 3 або 4 байти в UTF-8 і 2 або 4 байти в UTF-16.

Це має значення щоразу, коли система має обмеження саме за байтами, а не за символами — SMS-повідомлення, розмір стовпців у базах даних, обмеження розміру корисного навантаження API та деякі соціальні платформи вимірюють саме байти, а не символи, тож той самий фрагмент тексту може непомітно перевищити ліміт залежно від мови чи символів, які він містить.

Навіщо його використовувати?

  • Показує кількість символів, байти UTF-8 та байти UTF-16 поруч одне з одним.
  • Правильно рахує емодзі та інші символи поза базовою багатомовною площиною (Basic Multilingual Plane) як один символ, а не два.
  • Оновлюється в реальному часі під час набору — не потрібно натискати жодну кнопку.
  • Працює повністю у вашому браузері — без завантаження на сервер.
  • Безкоштовно, без реєстрації, без обмежень.

Як користуватися

  1. Введіть або вставте текст у поле.
  2. Прочитайте кількість символів, кількість байтів UTF-8 та кількість байтів UTF-16 під ним — вони оновлюються під час набору.

Приклад

Введення

Hello, 世界! 🌍

Результат

12 символів, 19 байтів UTF-8, 26 байтів UTF-16

Частина ASCII ("Hello, " та "! ") займає 1 байт на символ у кодуванні UTF-8. Кожен китайський ієрогліф займає 3 байти, а емодзі — 4 байти, тому кількість байтів помітно перевищує кількість символів.

Поширені випадки використання

  • Перевірка, чи вміститься багатомовний опис товару в стовпець бази даних, обмежений довжиною в байтах, а не кількістю символів.
  • Оцінка кількості SMS-сегментів, оскільки SMS тарифікуються та діляться за розміром у байтах, а текст не латинською абеткою має інше обмеження на сегмент.
  • Перевірка того, що корисне навантаження API або поле форми не перевищує обмеження розміру в байтах перед надсиланням.
  • Розуміння того, чому рядок, який "виглядає коротким", відхиляється системою через перевірку довжини на основі байтів.

Часті запитання

Чому кількість символів і кількість байтів не збігаються?

Текст у Unicode зберігається у вигляді байтів, і скільки байтів потрібно кожному символу, залежить від кодування та самого символу. У UTF-8 символи ASCII займають 1 байт, більшість латинських літер з діакритичними знаками, а також кирилиця, грецькі, івритські й арабські літери займають 2 байти, більшість ієрогліфів CJK займають 3 байти, а емодзі зазвичай займають 4 байти. Кількість символів просто рахує знаки, не зважаючи на те, як вони зберігаються.

Яку кількість байтів використовувати для поля з обмеженням у байтах?

Використовуйте те кодування, яке система справді застосовує для зберігання чи передачі тексту — більшість сучасних веб-API, баз даних і файлів використовують UTF-8, тож зазвичай актуальною є саме кількість байтів UTF-8. Деякі старіші системи (наприклад, внутрішня обробка рядків у Windows/Java) використовують UTF-16.

Чи правильно цей інструмент рахує емодзі?

Так. Багато емодзі внутрішньо зберігаються як пара "сурогатних" кодових одиниць UTF-16, які наївні методи підрахунку рахують як 2 символи. Цей інструмент коректно рахує кодові точки Unicode, тож емодзі рахується як 1 символ — відповідно до того, скільки символів людина фактично бачить.

Це те саме, що інструмент Лічильник слів?

Ні — Лічильник слів зосереджений на кількості слів і речень для потреб письма. Цей інструмент саме про розмір у байтах порівняно з кількістю символів, що важливо для технічних обмежень, а не для вимог щодо кількості слів.

Чи завантажується мій текст кудись?

Ні. Підрахунок відбувається локально у вашому браузері за допомогою вбудованого кодувальника тексту JavaScript; нічого не надсилається на сервер.

Схожі інструменти