|
Основной форум Сюда все проблемы связанные с программированием. |
20.09.2008, 16:55
|
#1
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Текстовые сообщения интерфейса - в виде массива строк?
Добрый день, коллеги!
Хочу поднять тему для обсуждения вопроса наиболее грамотной реализации текстового интерфейса, т.е. набора текстовых сообщений, выдываемых пользователю.
Если тупо загружать всё в переменные внутри проги, то сообщения интерфейса неудобно переводить на другие языки - нужно перекомпилировать весь проект.
Я сейчас сделал так - всё вынес в текстовый ресурсный файл, кодировка win1251. Данный файл я считываю построчно, конвертирую в UTF8, а затем записываю в массив.
Но, к сожалению, данный подход работает весьма медленно. На среднестатистическом телефоне SE K-700 загрузка 200 строк занимает около 8-10 секунд.
Но я видел реальные мидлеты, которые делают это мгновенно на этом же телефоне при таком же подходе к хранению интерфейсных сообщений.
Вопрос - как быть?
Что посоветуют знатоки, чтобы соблюсти следующие условия:
- быстрая загрузка
- минимизация занимаемой памяти (heap)
- возможность перевода на другой язык без пересборки (но это не столь критично, если что, то уж могу и пересобрать.)
|
(Offline)
|
|
21.09.2008, 08:09
|
#2
|
Мастер
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений (для 713 пользователей)
|
Ответ: Текстовые сообщения интерфейса - в виде массива строк?
Подход правильный. По-моему легче создать пару файлов с разными языками. Тут просто нужна либа для ускорения чтения/перекодировки строки WIN/UTF.
|
(Offline)
|
|
25.09.2008, 21:43
|
#3
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Текстовые сообщения интерфейса - в виде массива строк?
Объясните мне, как в char могут храниться символы в utf-8? Ведь в utf-8 каждый символ занимает от 1 до 4 байт, а тип char имеет размер 1 байт. Я чего-то непонимаю и мне это покоя не даёт. В MySQL также, если ставить кодировку utf-8, то все поля всё равно имеют прежний размер, как и при однобайтовых кодировках текста. Не понимаю...
|
(Offline)
|
|
25.09.2008, 21:47
|
#4
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Текстовые сообщения интерфейса - в виде массива строк?
чтото не так делаешь, у меня все в мгновение грузится
|
(Offline)
|
|
25.09.2008, 22:24
|
#5
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Ответ: Текстовые сообщения интерфейса - в виде массива строк?
Сообщение от Phantom_wc
Объясните мне, как в char могут храниться символы в utf-8? Ведь в utf-8 каждый символ занимает от 1 до 4 байт, а тип char имеет размер 1 байт. Я чего-то непонимаю и мне это покоя не даёт. В MySQL также, если ставить кодировку utf-8, то все поля всё равно имеют прежний размер, как и при однобайтовых кодировках текста. Не понимаю...
|
ИМХО, в utf8 максимальный размер символа - 2 байта, но я могу и ошибаться.
Вопрос о том, сколько реально байт занимает символ, принимает сама система. Если это символ с номером до 255 (латиница и пр.), то один байт.
Если от 256 до 65535 - то 2 байта.
Но вообще это дело мутное.
|
(Offline)
|
|
25.09.2008, 22:25
|
#6
|
ПроЭктировщик
Регистрация: 02.07.2008
Сообщений: 105
Написано 7 полезных сообщений (для 14 пользователей)
|
Ответ: Re: Текстовые сообщения интерфейса - в виде массива строк?
Сообщение от Kurdt
чтото не так делаешь, у меня все в мгновение грузится
|
А можешь дать пример кода и ресурсного файла?
|
(Offline)
|
|
26.09.2008, 00:18
|
#7
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Текстовые сообщения интерфейса - в виде массива строк?
Один символ в UTF-8 может занимать от одного до 6 байт. В настоящее время используются символы от 1 до 4 байт. 6-и байтовые не используют. [ источник]
- - -
Я просто не понимаю, если char - это тип данных, размером в один байт (0-255), то как он вообще принципиально может хранить в себе больше дозволенного? О_о
- - -
Вот что нашёл:
Большинство программ могут работать с UTF-8 как с традиционными однобайтными кодировками, не обращая внимания на то, что символ представляется как несколько последовательных байт. Для работы с отдельными символами строки обычно перекодируются в UCS-4, так что каждому символу соответствует машинное слово.
Одной из первых успешных коммерческих реализаций Юникода стала среда программирования Java. В ней принципиально отказались от 8-битного представления символов в пользу 16-битного. Сейчас большинство языков программирования поддерживают строки Юникода, хотя их представление может различаться в зависимости от реализации.
|
[ источник]
- - -
Любопытно... Значит char = 1 байт - это только условность...
P.S: А Java рулит
Последний раз редактировалось Phantom, 26.09.2008 в 01:30.
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 01:45.
|