Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Определения типа символа  (Прочитано 11623 раз)
0 Пользователей и 1 Гость смотрят эту тему.
Charaware
Гость
« : 19-04-2004 09:46 » 

Подкажите кто знает как определить
1) является ли символ Unicode символом
2) Как определить и различить является ли символ rus или eng кодировкой
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #1 : 19-04-2004 09:56 » 

1. Юниокд = 2 байта на символ!
2. Дык у каждого символа как Юникоде так и в Аски есть свой номер - для языклв группаномеров (кодов)

Обычным if (simbol > start_leng_group) && (simbol < stop_leng_group)

Можно проверить входит ли полученный символ в группу принадлежащую к языку!!!!
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 19-04-2004 10:26 » 

Charaware, английские - в диапазоне <0x80, русские - выше.
Или задача распознать кодировку?
Текст в unicode-е имеет такое свойство: в слове, составленном из букв одного языка, каждый второй байт один и тот же. Русская страница 0x05.
8-мибитные кодировки распознаются статистически: сделать гистограмму и на основе нее определить, кодировку. К сожалению, статистические методы не дают 100%.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Lex
Специалист

ru
Offline Offline

WWW
« Ответ #3 : 19-04-2004 11:31 » 

Цитата

К сожалению, статистические методы не дают 100%.

Угу, особенно при коротких сообщениях
Записан

Megabyte be with you!
Kuzmich
Гость
« Ответ #4 : 19-04-2004 11:50 » 

есть функция IsTextUnicode, но думаю буковку она не определит, использует статистические методы.
Charaware, ты уверен, что тебе определить надо именно одну букву ?
Записан
Anonymous
Гость
« Ответ #5 : 19-04-2004 12:01 » 

Все таки может скажите какие
функции winapi могут это сделать
а ту проверять не хочеться сколько байт ...

1)проверить является ли символ Unicode символом
2)и определить является ли символ rus или eng кодировкой
Записан
Anonymous
Гость
« Ответ #6 : 19-04-2004 12:08 » 

Charaware, ты уверен, что тебе определить надо именно одну букву ?

Kuzmich
мне надо определить сивол буквы
Записан
Гром
Птычк. Тьфу, птычник... Вот!
Готовлюсь к пенсии

il
Offline Offline
Пол: Мужской
Бодрый птах


« Ответ #7 : 19-04-2004 12:11 » 

RXL,
екст в unicode-е имеет такое свойство: в слове, составленном из букв одного языка, каждый второй байт один и тот же.

Это номер страницы языковой кодировки!
Для английского 0х00


Гость,

1. Если в коде буквы 2 байта - это юникод - какие методы???

Если это юникод то 0х00 в первом байте кода обозначает английскую страницу кодировки!!!

Все же ясно сказано...

Ребята - какая статистика Не понял Окститесь! Формат данных юникода и аски разный!!!
Записан

А птичку нашу прошу не обижать!!!
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #8 : 19-04-2004 12:39 » 

Charaware, ты бы описал свою задачу - наверняка найдется более оптимальный метод.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Charaware
Гость
« Ответ #9 : 22-04-2004 20:31 » 

В общем если просто сказать то нужно определить является ли строка
unicode а также нужны функции определения является ли символ unicode

если у кого есть возможность подкажите какие есть для этого функции или макросы которые входят в mfc и atl
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #10 : 23-04-2004 09:13 » 

Charaware, ты это уже говорил, но это не задача, а твое видение ее решения.
Ну как можно говорить о "является ли символ unicode"? Ты сам что ли не знаешь, что ты используешь - однобайтовые символы или двухдайтовые? Трудно тебя понять...
Насчет строк уже писали - см. выше.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
mixa
Гость
« Ответ #11 : 30-04-2004 15:39 » 

Вопрос в том, что если ты дашь просто одиночный символ char, то это точно не будет unicode, потому что unicode по определению двухбайтовый - w_char. С одним символом можно сказать что это англиский или спецсимвол, или даже возможно символ какого-нибудь другого языка (причем совершенно не ясно какого). С юникодом и проще и сложнее. Первый байт там определяет номер языка, в второй соответственно букву этого языка. Справедливо было замечено, что для англиского номер языка равен 0. Но мое наблюдение говорит о том, что для всех других кодов языков его значение больше 0х80. Т.е возможно применение такого алгоритма - если мы знаем, что это 100% unicode  - если символ меньше 0х80 то это простой англиский символ, если символ 0х00 то следующий символ это англиская буква. Если символ больше 0х80 то это код языка с последующей буквой этого языка. Поправте меня, если я не прав. Только обязательно ткните мордой.
Записан
RXL
Технический
Администратор

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #12 : 30-04-2004 20:51 » 

mixa, не совсем так. Сходи на http://www.unicode.org - там все описано.
Записан

... мы преодолеваем эту трудность без синтеза распределенных прототипов. (с) Жуков М.С.
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines