![]() |
|
Модераторы: Daevaorn |
![]()
|
|
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Здраствуйте. Возникла задача в которой надо определить язык текста. Эту задачу я пытаюсь решить путем сравнения символов ASCII:
Но в результате у меня считаются только английские символы. В чем может заключатся ошибка? Ести ли какие нибудь другие пути решения этой задачи? Можно даже функциями WinApi. |
|||
|
||||
| Sartorius |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1568 Регистрация: 18.7.2006 Где: Ivory tower Репутация: 8 Всего: 37 |
Не в юникоде строчка то?
|
|||
|
||||
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Честно говоря даже и не знаю. Сама программа написана на Api, она читает в readfile текстовый файл. А как определить Юникод или не Юникод?
|
|||
|
||||
| satrap |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 18 Регистрация: 29.11.2006 Репутация: нет Всего: 1 |
||||
|
||||
| codelord |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 777 Регистрация: 7.5.2005 Где: ты моя темноглаза я где?! Репутация: 1 Всего: 39 |
Открой Hex редактором если начало файла такое: FFFE или EFBB то юникод если нет то видимо нет. ну или посчитай сколько символов если текст не большой (или посмотри с помощью текстового редактора), юникод символ занимает 2 байта, т.е. если например 20 символов то файл юникод будет весить 40 байт, а обычный текст 20 байт. ну или еще открой блокнотом и выбери сохранить как и сохрани как тебе нужно там можно выбрать. |
|||
|
||||
| peetonn |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 17 Регистрация: 25.11.2006 Репутация: нет Всего: нет |
заметь:
у символа 'А' (русского) код 128 однако это неверно: если char a = 'А'; то a == (char) 128; // вовсе не так!!! |
|||
|
||||
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
Что значит начало? Открыл при помощи winhex в граффе offset - 00000 00000001.... т.е. FFFE или EFBB и не пахнет, а сама информация такого типа:E2 F2 EF...
По размеру 16 букв - 18 байт |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
В любом случае попробуй так:
bool Lang(char* readfile) { int rus=0,en=0; int i=0; int k; k=strlen(readfile); for(i=0;i<k;++i) { if((readfile[i]>'А')&&(readfile[i]<'я')) rus++; else if((readfile[i]>'A')&&(readfile[i]<'z')) en++; } if(en>rus) return true; else return false; } |
|||
|
||||
| Toohtik |
|
|||
![]() Шустрый ![]() Профиль Группа: Awaiting Authorisation Сообщений: 142 Регистрация: 30.1.2006 Где: Харьков Репутация: нет Всего: нет |
JackYF, спасибо помогло!!!
|
|||
|
||||
| Rockie |
|
|||
|
Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1143 Регистрация: 23.4.2006 Репутация: 8 Всего: 31 |
JackYF, символы в таблице ASCII не обязательно располагаются подряд (как в алфавите) и не идут цельным куском(в интервале от 'A' до 'z' еще попадают '\', '[', ']' и тд)
-------------------- Чтобы иметь большой гардероб - надо иметь большой гардероб. |
|||
|
||||
| JackYF |
|
|||
![]() полуавантюрист ![]() ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 18 Всего: 162 |
Rockie, не спорю.
Мое решение далеко не оптимальное. Оно есть второе, что приходит в голову... В принципе, если мы проверяем текст, то частота встречаемости \ , [ , ] на порядок меньше частоты встречаемости английских и русских букв. Если текст написан целиком на русском или английском языках, то ошибки, думаю, не будет. |
|||
|
||||
![]()
|
| Правила форума "С++:Общие вопросы" | |
|
|
Добро пожаловать!
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Earnest Daevaorn |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |