|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
24.06.2011, 09:44 | #11 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 17
|
Венцом всех размышлений стало вот это
wchar_t *translit(wchar_t *val) { wchar_t low[] = {L"абвгдеёжзийклмнопрстуфхцчшщьыъэю я"}; wchar_t high[] = {L"АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЬЫЪЭЮ Я"}; wchar_t *engArr[2][33] = { {L"a",L"b",L"v",L"g",L"d",L"e",L"yo ",L"zh",L"z",L"i",L"y", L"k",L"l",L"m",L"n",L"o",L"p",L"r", L"s",L"t",L"u",L"f", L"kh",L"ts",L"ch",L"sh",L"shch",L"' '",L"y",L"'",L"e",L"yu",L"ya"}, {L"A",L"B",L"V",L"G",L"D",L"E",L"Yo ",L"Zh",L"Z",L"I",L"Y", L"K",L"L",L"M",L"N",L"O",L"P",L"R", L"S",L"T",L"U",L"F", L"Kh",L"Ts",L"Ch",L"Sh",L"Shch",L"' '",L"Y",L"'",L"E",L"Yu",L"Ya"} }; int len = wcslen(&val); bool trig = false; wchar_t *result = new wchar_t[len*2]; result = NULL; for(int i = 0; i < len; i++) { for(int j = 0; j <= 33; j++) { if(val[i] == low[j]) { wcscat(result, engArr[0][j]); trig = true; break; } else if(val[i] == high[j]) { wcscat(result, engArr[1][j]); trig = true; break; } } if (!trig) { wcscat(result, val[i]); } else {trig = false;} } return result; } Но есть пара проблем, когда происходит перевод, в начало записывается муть какая то, а потом уже транслит. И при переводи символов типа (\?\!\"\'....) вылетает ошибка. А ещё мне нужно умудриться транслитировать казахскую раскладку, на данный момент которую он воспринимает весьма болезненно Что делать? |
24.06.2011, 09:47 | #12 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
а UTF8 уже не юникод?
мультибайтовые(символ состоит из нескольких char'ов(для UTF8)/wchar_t(для UTF16(правда на практике не встречал мультибайтовости тут), причем количество байт на символ может быть переменное) кодировки не отменяли. правда может ошибаюсь про основную кодировку никсов... (хотя терминал при загрузке готовится именно к UTF8) Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. Последний раз редактировалось Пепел Феникса; 24.06.2011 в 09:50. |
24.06.2011, 09:49 | #13 | |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Цитата:
Ищете информацию по C++?
cplusplus.com |
|
24.06.2011, 09:50 | #14 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 17
|
Как это делать?
Я с юникодом не работал, а вот теперь столкнулся. Что и как тут я не знаю... Гуглил несколько часов, результат тоже, ничего не нарыл полезного, разъясняющего. |
24.06.2011, 09:52 | #15 |
Пользователь
Регистрация: 13.06.2011
Сообщений: 17
|
|
24.06.2011, 10:09 | #16 | ||
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Цитата:
Цитата:
Свой первый компьютер я собрал собственными руками в 1982-м году на процессоре КР580ВМ80А. Кодировка в знакогенераторе там была ASCII. В ней были латинские заглавные буквы и карилица, то-же заглавные. Всё это умещалось в один байт (256 знаков). В нынешнее время этот рудиментарный отросток остался в виде типа char.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |
||
24.06.2011, 10:12 | #17 | |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
Цитата:
это и без вас знаю, и хвастаться про сборку своими руками не к месту не стоило. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
|
24.06.2011, 10:23 | #18 | ||
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
это Ваши слова? Цитата:
|
||
24.06.2011, 10:43 | #19 |
C++
Форумчанин
Регистрация: 27.03.2011
Сообщений: 803
|
Сделал без поддержки Unicode, т.к. тогда придется покидать уютную консольку, а так вот:
Код:
Ищете информацию по C++?
cplusplus.com |
24.06.2011, 10:46 | #20 |
Старожил
Регистрация: 31.05.2010
Сообщений: 13,543
|
Ну тут да, малость перегнул палку. Зацепило просто.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder |