2010-04-29 2 views
0

Что такое хорошая оценка/преобразование/формула для определения X # символов = Y # байтов?Символы к байтам

+3

Это зависит исключительно от используемой вами схемы кодирования символов. Какой из них вы используете? –

+0

MySQL ...? > _o –

+1

Кодировка по умолчанию в MySQL - латинская-1, поэтому, если вы ее не изменили, это 1 байт на символ, но вы можете хранить только очень ограниченный набор символов. Рассмотрим использование UTF-8. – bobince

ответ

5

Это полностью зависит от кодировки и потенциально данных.

Для UTF-16, если вы знаете, что все символы находятся на базовой многоязычной плоскости, ответ будет байтами = 2 *.

Для UTF-8, если все находится в диапазоне ASCII, то байты = символы, но если есть много дальневосточных символов, это может быть столько же, сколько байты = 3 * символов (и это все еще предполагается базовым Многоязычный самолет).

Другие кодировки, очевидно, имеют разные сценарии. Не могли бы вы подробнее рассказать о своей ситуации (и вашей платформе)? Вы хотите точно рассчитанное значение на основе реальных символов? Вы знаете что-нибудь о тексте, который вы собираетесь кодировать?

+0

UTF-8 может использовать до 4 байтов для одного символа. –

+0

@ Кристофер: Даже внутри BMP? Не согласно http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8 –

0

Для ANSI я бы подумал, что 1 байт для char, но для unicode я бы подумал 2 байта на символ. Хотя есть, вероятно, многобайтовые шаблоны.

Смежные вопросы