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 payload и някои социални платформи измерват всичко в байтове, не в символи, така че един и същ текст може мълчаливо да надвиши ограничение в зависимост от езика или символите, които съдържа.

Защо да го използвате?

  • Показва брой символи, 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 payload или поле от формуляр остава под ограничение на размера, базирано на байтове, преди изпращане.
  • Разбиране защо низ, който "изглежда кратък", се отхвърля от система с проверка на дължината, базирана на байтове.

Често задавани въпроси

Защо броят на символите и броят на байтовете не съвпадат?

Unicode текстът се съхранява като байтове, а колко байта се нуждае всеки символ зависи от кодировката и самия символ. В UTF-8 ASCII символите заемат 1 байт, повечето латински букви с ударение и кирилица/гръцки/иврит/арабски заемат 2 байта, повечето CJK символи заемат 3 байта, а емоджитата обикновено заемат 4 байта. Броят на символите просто брои знаци, без значение как са съхранени.

Кой брой байтове трябва да използвам за поле с ограничение в байтове?

Използвайте кодировката, която системата действително използва за съхранение или предаване на текста — повечето съвременни уеб API, бази данни и файлове използват UTF-8, така че броят на UTF-8 байтовете обикновено е релевантният. Някои по-стари системи (като вътрешната обработка на низове в Windows/Java) използват UTF-16.

Брои ли този инструмент коректно емоджита?

Да. Много емоджита се съхраняват вътрешно като двойка UTF-16 "сурогатни" кодови единици, които наивните методи за броене броят като 2 символа. Този инструмент брои коректно Unicode кодовите точки, така че едно емоджи се брои като 1 символ, съответстващ на това колко символа човек действително вижда.

Същото ли е това като инструмента Брояч на думи?

Не — Броячът на думи се фокусира върху броя на думите и изреченията за писане. Този инструмент е конкретно за размера в байтове спрямо броя символи, което има значение за технически ограничения, а не за изисквания за брой думи.

Качва ли се текстът ми някъде?

Не. Броенето се извършва локално във вашия браузър чрез вградения текстов кодер на JavaScript; нищо не се изпраща до сървър.