|
20.09.2008, 16:46
|
#106
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Если это возможно, хорошо бы иметь библиотеки для быстрого преобразования кодировок строк. На форуме описано несколько (примерно одинаковых) решений для перекодирования win1251->UTF8, но это не очень удобно. Самое главное - что данные алгоритмы работают медленно. Приходится посимвольно считывать строку, брать Ord символа, потом делать Chr.
На реальных телефонах подобная обработка текста размером 5-10 кб уже ощутимо тормозит. Да и память жрёт.
Вопрос - есть ли на J2ME возможность быстрой (встроенной или низкоуровневой) конвертации кодировки строки?
|
(Offline)
|
|
21.09.2008, 08:01
|
#107
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Сообщение от Skythrone
Если это возможно, хорошо бы иметь библиотеки для быстрого преобразования кодировок строк. На форуме описано несколько (примерно одинаковых) решений для перекодирования win1251->UTF8, но это не очень удобно. Самое главное - что данные алгоритмы работают медленно. Приходится посимвольно считывать строку, брать Ord символа, потом делать Chr.
На реальных телефонах подобная обработка текста размером 5-10 кб уже ощутимо тормозит. Да и память жрёт.
Вопрос - есть ли на J2ME возможность быстрой (встроенной или низкоуровневой) конвертации кодировки строки?
|
Действительно, в Java есть встроенный конвертер строк с одной кодировки в другую. Но я что-то стремаюсь его использовать. Может оказаться так, что на одном телефоне будет нормально работать, а другой какой-нибудь "серый" телефон может и не знать таких кодировок. Короче, такую библиотеку можно написать и довольно легко, но я тебя предупредил.
Всё же легче создать собственный алгоритм. Пусть медленно, зато надежно. Я могу добавить функции переконвертации строк, например в библиотеку Lib_str.
|
(Offline)
|
|
21.09.2008, 08:59
|
#108
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Ну, тогда в этом случае серый телефон всё равно не сможет отобразить символы на экране.
В общем, я буду тебе благодарен за либу.
И если есть возможность ускорить загрузку строк из тестовых ресурсов, будет тоже здорово.
|
(Offline)
|
|
21.09.2008, 10:13
|
#109
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Может кто-нить сделать либу для загрузки ресурса в виде строки?
|
(Offline)
|
|
21.09.2008, 16:44
|
#110
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Я наверно смогу =) Как либу назвать?
|
(Offline)
|
|
21.09.2008, 17:12
|
#111
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Гы. Самое сложное в написании библотеки - придумать название . Lib_res2str. Или можно Lib_res, на случай, если кто добавит функции для нормальной работы с ресурсами.
|
(Offline)
|
|
21.09.2008, 17:51
|
#112
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Офигеть... Правильно мне сегодня друг сказал... По воскресениям телепатические способности усиливаются. Уже сделал =) И назвал именно Lib_res2str =) Вот: http://wc.webhop.net:8080/res2str.zip Считывает ресурс в строку в ASCII, могу попробовать сделать дополнительный параметр функции, который бы давал понять функции в какой кодировке читать ресурс - ASCII или UTF-8 =) Пока либу не выкладываю, так как на самом деле она слишком маленькая. Может ещё чего-то сделать и добавить?
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
21.09.2008, 18:46
|
#113
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Ага, сделай, пожалуйста, конвертилку в UTF8.
|
(Offline)
|
|
21.09.2008, 21:34
|
#114
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Так. На счёт utf-8 погорячился. Не знаю пока как сделать. Сделал чтение в ansi (windows-1251). Теперь русские буквы отображаются нормально. У меня мысль появилась, может сделать чтение в различных кодировках? Или не стоит заморачиваться? Сейчас может читать в ascii и ansi. Если из ресурса читаем текст, то читаем как ansi, а если читаем бинарные данные, то читаем как ascii. Это если я правильно всё понимаю. =) В общем вот, ссылка та же самая: http://wc.webhop.net:8080/res2str.zip
|
(Offline)
|
|
21.09.2008, 21:40
|
#115
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Phantom_wc, спасибо! Вроде маленькая либа, а облегчает жизнь. Может сделаешь, чтоб можно было нормально (без зависания мидлета) работать с ресурсами? А то ReadLine, как известно, не айс.
Да, телепатия усиливается! Только это не от воскресенья, а от большого адронного коллайдера, там вчера что-то навернулось
|
(Offline)
|
|
21.09.2008, 21:47
|
#116
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Только вот я чего не понимаю. Чтобы русские буквы читать, делаем:
(char)((b>=0xc0&&b<=0xFF)?b+0x350:b)
В принципе всё понятно, конвертируем в юникод. Видел такие примеры на нескольких сайтов. И это работает. Но ведь в юникоде каждый символ занимает от 1 до 4 байт (так-то я говорю про utf-8, а не про юникод, или это одно и то же?), в частности символы русского языка - два байта. Поэтому такой вопрос. Как мы можем загнать в тип char русский символ в два байта, если он занимает в памяти один байт? О_о или я чего-то жёстко не понимаю?
|
(Offline)
|
|
21.09.2008, 21:50
|
#117
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Romanzes, так. А какие именно функции сделать?
|
(Offline)
|
|
21.09.2008, 22:11
|
#118
|
Разработчик
Регистрация: 06.04.2008
Сообщений: 541
Написано 196 полезных сообщений (для 638 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Ну, там ReadLine нормальную. Больше не могу придумать
|
(Offline)
|
|
22.09.2008, 10:09
|
#119
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
Вот: http://wc.webhop.net:8080/res.zip
Там ридми лежит в архиве. Возможно лишнего наворотил заумного, но сделал это только чтобы либа весила меньше и не было почти одинаковых кусков кода в ней. И назвал Lib_res. Если одобрите, создам тему и выложу как полагается =)
|
(Offline)
|
|
Сообщение было полезно следующим пользователям:
|
|
22.09.2008, 14:17
|
#120
|
Нуждающийся
Регистрация: 22.09.2008
Сообщений: 74
Написано 8 полезных сообщений (для 12 пользователей)
|
Ответ: Запросы на написание библиотек. Библиотеки запрашивать только здесь.
У меня на теле в JVM нет ввода русских букв.
Сделайте плиз либу, чтобы был програмнный ввод символов.
Я на MP программку писал, может чем поможет.
Вот код:
program Programniy_vvod_russkimi_bukvami; var ok:command; n,k,nl,kl,nn,kn,tim,np:integer; rd,ru,ed,eu,td,tu,txt,s:string; upc,lng:string; begin ok:=createcommand('OK',CM_OK,2); addcommand(ok); rd:='.,?!0: _1=+-абвг2 деёжз3ийкл4 мно5 прс6 туфх7 цчшщъ8ыьэюя9'; ru:='.,?!0: _1=+-АБВГ2 ДЕЁЖЗ3ИЙКЛ4 МНО5 ПРС6 ТУФХ7 ЦЧШЩЪ8ЫЬЭЮЯ9'; ed:='.,?!0: _1=+-abc2 def3 ghi4 jkl5 mno6 pqrs7 tuv8 wxyz9 '; eu:='.,?!0: _1=+-ABC2 DEF3 GHI4 JKL5 MNO6 PQRS7 TUV8 WXYZ9 '; tu:=ru;td:=rd; upc:='UPCASE'; lng:='rus'; repeat k:=getkeyclicked; if (k<>0) then kl:=k if (kl=42) then begin if (upc='UPCASE') then upc:='downcase' else upc:='UPCASE'; kl:=0; end; if (kl=-7) then begin if (lng='rus') then lng:='eng' else lng:='rus'; kl:=0; end; if (kl>47) and (nl>47) then if (nl=kl) then nn:=nn+1; if (nn>6) then nn:=1; if (nl>42) and (kl<>nl) and (nn>0) and (kl<>0)then begin kn:=nn+(nl-48)*6+4; nn:=0; end; if (nn>=1) then kl:=0 else nl:=kl; if (lng='rus') then begin td:=rd; tu:=ru; end else begin td:=ed; tu:=eu; end; if (np<>nn) then tim:=0; if (tim>30) then begin kn:=nn+(nl-48)*6+4; tim:=0; nn:=0; end; np:=nn; tim:=tim+1; if (kn>4) then begin if upc='UPCASE' then txt:=txt+getchar(tu,kn-5) else txt:=txt+getchar(td,kn-5); kn:=0; end if (kl=-8) and (length(txt)>0) then begin txt:=copy(txt, 0, length(txt)-1); kl:=0; end; kn:=nn+(nl-48)*6+4; if upc='UPCASE' then s:=getchar(tu,kn-5) else s:=getchar(td,kn-5); kn:=0; setColor(200, 255, 255); fillrect(0,0,240,320); setColor(0, 0, 0); drawtext(''+nl,10,10); setColor(0, 255, 0); drawtext(s,10,30); drawtext(upc,50,50); drawtext(lng,10,50); setColor(0, 0, 255); drawtext(txt,10,70); drawtext(''+tim,10,90); repaint; until (kl=-6 ) or (getclickedcommand=ok); end.
Последний раз редактировалось ViNT, 22.09.2008 в 21:59.
Причина: Используйте теги для экономии места и улучшения понятности кода
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:39.
|