![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| Mind_master |
|
||||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 22.1.2007 Репутация: нет Всего: нет |
В программе я беру введенный в поле ввода текст, перевожу его в byte массив, после чего прибавляю/отбавляю байты.
После чего делаю
Английский язык выводит правильно, а вместо русского только знаки вопроса (пробовал на нокии с40 и какомто сони ериксоне Строка
В чем может быть проблема? |
||||
|
|||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
прикольно Я думаю вся проблема в том что ты делаешь с этими байтами... Не забыл что строки в java храняться в utf - т.е. русские символы занимают не один байт?
и что ты хотел сделать этим? строка + символ = строка_с_этим_символом - как тебе это должно помочь? |
|||
|
||||
| math64 |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2505 Регистрация: 12.4.2007 Репутация: 8 Всего: 72 |
|
|||
|
||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
math64, я не думаю что такой код требуется, так как:
т.е. строка уже в utf и преобразовывать ее не нужно из 1251 в utf Я вижу 2 варианта проблемы: 1) как уже описывал выше - возможно проблема в преобразовании. Что там делается с байтами? 2) так же возможно еще одна проблема: как выводится текст на экран. если используется свой шрифт, то возможно там какие-то проблемы, но вероятнее всего п1. |
|||
|
||||
| Mind_master |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 22.1.2007 Репутация: нет Всего: нет |
да, как я понял, проблема именно в преобразовании
таким образом вопрос: как прибавлять/отнимать байты (чтобы получилась следующая/предыдущая буква, символ) у символов UTF ? З.Ы. знаки вопроса выводятся если ничего не делать с массивом (т.е. byte для хранения не подходит) |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
с "Ё" не получится. В j2me System.arraycopy нет Быстро, но через заднее место -------------------- iOS developer |
|||
|
||||
| Mind_master |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 25 Регистрация: 22.1.2007 Репутация: нет Всего: нет |
Всем спасибо, разобрался
Это сообщение отредактировал(а) Mind_master - 13.1.2009, 19:11 |
|||
|
||||
| John2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.6.2009 Репутация: нет Всего: нет |
У меня аналогичная проблема. Ситуация с массивами byte, хранящимися в RMS. При преобразовании из byte[] в String, в эмуляторе выводятся правильно русские буквы.
А в телефоне Nokia выводятся знаки вопроса - "?????". В чём может быть проблема - с кодировками? |
|||
|
||||
| ivanovpv |
|
||||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 10 Всего: 28 |
Ну вы даете... Рассказываю правильный способ работы с байтами строк в J2ME:
1) Правильно переводим String в массив байтов
байты получаются из стринга все время разные в зависимости от кодировки. Если не указывать кодировку, то будет взята кодировка по умолчанию, которая зависит от положения луны на небосклоне (проще говоря в зависит от локали и модели тилипона) - посему настоятельно рекомендуется вручную указывать кодировку. Рекомендуется или ISO-8859-1 или UTF-8 - поскольку они поддерживаются всегда. 2) Чегой-то делаем с байтами. Кстати, вынужден опровергнуть уважаемого W0LF, System.arraycopy() в J2ME есть! 3) Массив байтов переводим обратно в String тем же макаром, ну или более затейливо, а именно с оффсетом в массиве:
Это сообщение отредактировал(а) ivanovpv - 12.5.2010, 07:45 -------------------- Aut viam inveniam aut faciam |
||||
|
|||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
ну, след раз апи смотреть буду, прежде чем писать =) я уже три года под j2me не пишу, да и вообще под java =) -------------------- iOS developer |
|||
|
||||
| John2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.6.2009 Репутация: нет Всего: нет |
Спасибо, с UTF-8 получилось, а с ISO-8859-1 нет.
Но здесь другая проблема - никак не дойдёт. При извлечении из rms String получается вдвое короче, чем начальная. Поиски информации по конструкторам и методам классов String и Byte успехом не увенчались. Пожалуйста помогите разобраться Что Вы здесь имели ввиду - обычная процедура для сохранения данных или как раз какая-то особая обработка массивов байт? |
|||
|
||||
| ivanovpv |
|
|||
![]() Варвар ![]() ![]() Профиль Группа: Участник Сообщений: 639 Регистрация: 26.1.2005 Где: Москва Репутация: 10 Всего: 28 |
По хорошему надо делать так:
Добавлено через 3 минуты и 36 секунд Бывает, а я уже лет 10 не пишу по Сями - так что уже и забыл правила форматирования printf() Это сообщение отредактировал(а) ivanovpv - 13.5.2010, 08:46 -------------------- Aut viam inveniam aut faciam |
|||
|
||||
| John2 |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 27 Регистрация: 30.6.2009 Репутация: нет Всего: нет |
||||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |