[FAQ] Указываю размер фрагмента при делении текста, а на диске размер файла другой. Почему?
Добавлено: 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.
В программе "Балаболка" при делении текста указывается значение в "условных килобайтах"; то есть, пользователь задает размер фрагмента текста как количество тысяч символов (любых символов, включая буквы, знаки препинания, пробелы, а также символы перевода каретки).
Один "условный килобайт" = одна тысяча символов.
Файл, который получится при сохранении текста на диске, может отличаться по размеру от заданного количества килобайтов. Всё дело в кодировке: при записи информации на диск в кодировке UTF-8 латинская буква, пробел или знак препинания будут записаны как 1 байт, русская буква - как 2 байта, иероглиф - как 3 или 4 байта. "Условные килобайты" и реальные килобайты могут существенно отличаться друг от друга.
Традиция указывать размер фрагмента в килобайтах тянется со времен первых версий "Балаболки", когда применялась единственная кодировка ANSI, и один символ всегда был равен одному байту. Сейчас менять что-либо не хочется, к тому же изменение потребует дополнительного объяснения в окнах программы.
Важное пояснение по поводу того, как "Балаболка" делит текст на части. Изначально использовался такой метод: программа делила текст на части, строго равные заданному количеству килобайт. Например, размер текста равен 100 КБ, и задан размер фрагмента 30 КБ. Получались четыре части: 30, 30, 30, 10.
В 2015 году способ деления был обновлен. Теперь заданный размер фрагмента воспринимается программой не как целевое значение, а как верхний предел для размера части текста. Текст будет поделен на части одинакового размера. Например, из текста размером 100 КБ получатся четыре равные части: 25, 25, 25, 25.