[FAQ] Указываю размер фрагмента при делении текста, а на диске размер файла другой. Почему?

Программа "Балаболка" предназначена для воспроизведения звуков человеческого голоса с использованием любого речевого синтезатора, установленного на компьютере.

Модератор: balabolka

Ответить
Аватара пользователя
balabolka
V.I.P.

[FAQ] Указываю размер фрагмента при делении текста, а на диске размер файла другой. Почему?

#1

Сообщение balabolka » 11 авг 2018 04:04

Если указать размер фрагмента текста при делении на части и кодировку UTF-8, то размер файла на диске отличается от заданного значения в килобайтах. Например, указал значение, равное 300 КБ, а файл получился размером 500 КБ. В чём дело?


В программе "Балаболка" при делении текста указывается значение в "условных килобайтах"; то есть, пользователь задает размер фрагмента текста как количество тысяч символов (любых символов, включая буквы, знаки препинания, пробелы, а также символы перевода каретки).

Один "условный килобайт" = одна тысяча символов.

Файл, который получится при сохранении текста на диске, может отличаться по размеру от заданного количества килобайтов. Всё дело в кодировке: при записи информации на диск в кодировке UTF-8 латинская буква, пробел или знак препинания будут записаны как 1 байт, русская буква - как 2 байта, иероглиф - как 3 или 4 байта. "Условные килобайты" и реальные килобайты могут существенно отличаться друг от друга.

Традиция указывать размер фрагмента в килобайтах тянется со времен первых версий "Балаболки", когда применялась единственная кодировка ANSI, и один символ всегда был равен одному байту. Сейчас менять что-либо не хочется, к тому же изменение потребует дополнительного объяснения в окнах программы.



Важное пояснение по поводу того, как "Балаболка" делит текст на части. Изначально использовался такой метод: программа делила текст на части, строго равные заданному количеству килобайт. Например, размер текста равен 100 КБ, и задан размер фрагмента 30 КБ. Получались четыре части: 30, 30, 30, 10.

В 2015 году способ деления был обновлен. Теперь заданный размер фрагмента воспринимается программой не как целевое значение, а как верхний предел для размера части текста. Текст будет поделен на части одинакового размера. Например, из текста размером 100 КБ получатся четыре равные части: 25, 25, 25, 25.

Аватара пользователя
balabolka
V.I.P.

[FAQ] Указываю размер фрагмента при делении текста, а на диске размер файла другой. Почему?

#2

Сообщение balabolka » 13 мар 2019 13:56

Начиная с версии 2.15.0.691, для размеров частей текста указывается не количество килобайтов, а количество символов. Символами считаются буквы, цифры, знаки препинания, пробелы, а также символы возврата каретки и перевода строки (CR LF = обозначение новой строки в Windows).

Ответить

Вернуться в «Балаболка»