Модераторы: Partizan, gambit
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Есть ли кодировки, с переменным количеством байт на символ? 
:(
    Опции темы
neutrino
Дата 2.12.2010, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Приветствую!

Собственно, САБЖ. Бывают ли кодировки, в которых количество байт в которые кодируется символ может изменяться от символа к символу? 


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
korob2001
Дата 2.12.2010, 17:00 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



UTF-8  -  если я правильно понял вопрос

Это сообщение отредактировал(а) korob2001 - 2.12.2010, 17:01


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
neutrino
Дата 2.12.2010, 17:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



korob2001, Я думал в кодеровке UTF-8 - все символы ровно по 8 бит. Есть символы, которые занимают меньше?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
korob2001
Дата 2.12.2010, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата

UTF-8 (от англ. Unicode Transformation Format — формат преобразования Юникода) — в настоящее время распространённая кодировка, реализующая представление Юникода, совместимое с 8-битным кодированием текста. Нашла широкое применение в операционных системах и веб-пространстве.

Текст, состоящий только из символов Юникода с номерами меньше 128, при записи в UTF-8 превращается в обычный текст ASCII. И наоборот, в тексте UTF-8 любой байт со значением меньше 128 изображает символ ASCII с тем же кодом. Остальные символы Юникода изображаются последовательностями длиной от 2 до 6 байт (реально только до 4 байт, поскольку использование кодов больше 221 не планируется), в которых первый байт всегда имеет вид 11xxxxxx, а остальные — 10xxxxxx.

Этот кусок текста я взял отсуюда: http://ru.wikipedia.org/wiki/UTF-8

Это сообщение отредактировал(а) korob2001 - 2.12.2010, 17:07


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
neutrino
Дата 2.12.2010, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Цитата

UTF-8 encodes each character (code point) in 1 to 4 octets (8-bit bytes). The first 128 characters of the Unicode character set (which correspond directly to the ASCII) use a single octet with the same binary value as in ASCII.

http://en.wikipedia.org/wiki/UTF-8

Вопрос снят. Я бы даже не подумал читать об этом. Мне казалось это все настолько тривиальным... Ужос! Теперь мне нужно нехило переделать движок регекспов, чтобы поддерживать по-настоящему юникод...

Добавлено через 29 секунд
korob2001, опередил smile


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
korob2001
Дата 2.12.2010, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Т.е. кодирование в UTF-8 происходит по более уной схеме, в отличае от UTF-16 - где на каждый симол выделяется 2 байта (16 бит).

Это сообщение отредактировал(а) korob2001 - 2.12.2010, 17:15


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
jonie
Дата 2.12.2010, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 5613
Регистрация: 21.8.2005
Где: Владимир

Репутация: 22
Всего: 118



korob2001, насчет умной можно поспорить. Например в программировании UTF-8 неудобна (не сразу тебе по количеству байт узнать сколько символов, не выделить нужное кол-во в буфере байт под получаемую строку...)...


--------------------
Что-то не поняли? -> Напейтесь до зеленых человечков... эта сверхцивилизация Вам поможет...
PM MAIL Jabber   Вверх
neutrino
Дата 2.12.2010, 17:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Gothic soul
****


Профиль
Группа: Модератор
Сообщений: 3041
Регистрация: 25.3.2002
Где: Верхняя Галилея, Кармиэль

Репутация: 3
Всего: 62



Непонятно, как тогда в дотНете в два байта обычного char-а запихивают все возможные символы? Ведь UTF-16, которым пользуется дотНет тоже не имеет постоянную длину.  smile

Добавлено @ 17:38
Цитата(korob2001 @  2.12.2010,  16:14 Найти цитируемый пост)
в отличае от UTF-16 - где на каждый симол выделяется 2 байта (16 бит).

Цитата

UTF-16 (16-bit Unicode Transformation Format) is a character encoding for Unicode capable of encoding 1,112,064 numbers (called code points) in the Unicode code space from 0 to 0x10FFFF. It produces a variable-length result of either one or two 16-bit code units per code point.

http://en.wikipedia.org/wiki/UTF-16/UCS-2

Добавлено @ 17:41
Еще вопрос, а используется Big Endian Notation или что?


--------------------
The truth comes from within ...

Покойся с миром, Vit 
PM MAIL WWW ICQ Skype GTalk   Вверх
korob2001
Дата 2.12.2010, 18:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2871
Регистрация: 29.12.2002

Репутация: нет
Всего: 61



Цитата(jonie @  2.12.2010,  14:31 Найти цитируемый пост)
korob2001, насчет умной можно поспорить. Например в программировании UTF-8 неудобна (не сразу тебе по количеству байт узнать сколько символов, не выделить нужное кол-во в буфере байт под получаемую строку...)... 

Можно поспорить и с тем, что в программировании UTF-8 не удобна. Хотя наверное это зависит от области программирования, лично мне ещё ниразу не приходилось сталкиваться с задачей, в которой нужно было бы юзать UTF-16, вместо UTF-8.

Умная, в данном контексте, означает - что она выделяет необходимую память, для конкретного символа. К тому же если Unicode не поддерживается, то символы попадающие в диапазон ASCII всё же будут доступны.

Это сообщение отредактировал(а) korob2001 - 2.12.2010, 18:50


--------------------
"Время проходит", - привыкли говорить вы по неверному пониманию. 
"Время стоит - проходите вы".
PM MAIL WWW ICQ MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Прежде чем создать тему, посмотрите сюда:
mr.DUDA
THandle

Используйте теги [code=csharp][/code] для подсветки кода. Используйтe чекбокс "транслит" если у Вас нет русских шрифтов.
Что делать если Вам помогли, но отблагодарить помощника плюсом в репутацию Вы не можете(не хватает сообщений)? Пишите сюда, или отправляйте репорт. Поставим :)
Так же не забывайте отмечать свой вопрос решенным, если он таковым является :)


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, mr.DUDA, THandle.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Общие вопросы по .NET и C# | Следующая тема »


 




[ Время генерации скрипта: 0.0739 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.