Ответ 1
Если вы хотите что-то общее, я думаю, вы должны придерживаться этого:
- Английский язык занимает чуть более 1 байт на символ (есть случайный символ, отличный от ASCII, часто пунктуация или символы, встроенные в текст).
- Большинство других языков, которые используют латинский алфавит, используют несколько больше, чем 1, но я был бы удивлен, если бы вы ожидали большего, чем, скажем, 1.5.
- Языки, использующие некоторые другие скрипты (греческий и т.д.), занимают около 2 байтов на символ.
- Восточноазиатские языки занимают около 3 байтов на символ (интервал, управляющие символы и встроенный ASCII делают меньше, не BMP заставляет его брать больше).
Это все очень неполное, приблизительное и не количественное.
Если вам нужно что-то более количественное, я думаю, вам придется изучать каждый язык по отдельности. Я сомневаюсь, что вы найдете предварительно вычисленные результаты там, которые уже применяются к множеству разных языков.
Если у вас есть текст текста для языка, легко вычислить среднее количество необходимых байтов. Начните с страницы Текстовый корпус в Википедии. Он связывает, по крайней мере, один хороший свободно доступный корпус для английского языка, и некоторые из них могут быть доступны и для других языков (я не искал ссылки, чтобы узнать).
Кстати, я не рекомендую использовать эту информацию для усечения длины поля базы данных, как вы указали (в комментариях), которую вы намереваетесь сделать. Прежде всего, если вы использовали корпус, составленный из litterature, чтобы придумать ваше ожидаемое количество байтов на символ, вы можете обнаружить, что корпус вовсе не представляет короткие короткие текстовые строки, которые попадают в вашу базу данных, отбрасывая ваше ожидание. Просто получите весь столбец базы данных. Большинство результатов будут намного короче максимальной длины, а когда это не так, я не думаю, что ваша оптимизация стоит того, чтобы сохранить сто байтов или около того.