Извините, ничего не найдено.

Не расстраивайся! Лучше выпей чайку!
Регистрация
Справка
Календарь

Вернуться   forum.boolean.name > Программирование игр для мобильных телефонов > JAVA Micro Edition

JAVA Micro Edition Низкоуровневое программирование мобильных телефонов.

Ответ
 
Опции темы
Старый 12.03.2010, 22:50   #1
IvanSCM
AnyKey`щик
 
Аватар для IvanSCM
 
Регистрация: 06.02.2010
Адрес: KZ
Сообщений: 16
Написано 5 полезных сообщений
(для 49 пользователей)
Восклицание Кодивка мидлета и связь через интернет.

Значит читал я читал и начитал что J2ME работает с UTF-8 мол родная кодировка. Но интересно следующее: внутри мидлета юникод, однозначно, конект идет с сервером, сервер отдает в UTF-8, а в итоге "кракозябры".

кароче узнал что ко мне на сервак строка "Привет" приходит как Привет. Узнал кодировку это CP1252. Но с мидлета я посылаю явно ЮТФ8. Неразбириха. Даже если обратно послать этот текст на телефон приходит Привет. *ломаю голову*
__________________
Знаки препинания ставьте как Вам удобно.
С уважением, IvanSCM.

Последний раз редактировалось IvanSCM, 13.03.2010 в 19:35.
(Offline)
 
Ответить с цитированием
Старый 24.03.2010, 02:46   #2
odd
Мастер
 
Аватар для odd
 
Регистрация: 06.09.2007
Адрес: Донецк, ДНР
Сообщений: 1,023
Написано 298 полезных сообщений
(для 713 пользователей)
Ответ: Кодивка мидлета и связь через интернет.

Да, в Java ME очень оригинально сделаны операции чтения/отправки потоков данных.
Забавно, что кодировки меняются автоматически, а вот вручную переделать строку из одной кодировки в другую так это фигушки.
(Offline)
 
Ответить с цитированием
Старый 24.03.2010, 06:51   #3
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Кодивка мидлета и связь через интернет.

Если не нужна полная поддержка всех символов, а только русские в нормальный вид привести (цифры, символы и английские должны быть нормальные, совпадают с ASCII), то можно просто перевести коды русских букв в ASCII, а прочие не трогать.

Вот простая штука:
public static String fnSimpleUTFToAscii(String text)
{
    String str = "";
    int count = text.length();
    char smb;
    for(int k=0;k<count;++k)
    {
        smb = text.charAt(k);
        if(smb >= 1040 && smb <= 1103) //русские переводим в ascii-код
            str += String.valueOf(smb - 1040 + 192);
        else if(smb == 1025) //Ё
            str += String.valueOf(168);
        else if(smb == 1105) //ё
            str += String.valueOf(184);
        else //прочие символы оставляем прежними
            str += String.valueOf(smb);            
    }
    return str;
}
Кстати, в джаве используется BigEndianStream.
(Offline)
 
Ответить с цитированием
Старый 28.03.2010, 14:07   #4
IvanSCM
AnyKey`щик
 
Аватар для IvanSCM
 
Регистрация: 06.02.2010
Адрес: KZ
Сообщений: 16
Написано 5 полезных сообщений
(для 49 пользователей)
Ответ: Кодивка мидлета и связь через интернет.

Жека, это мне для отправки использовать?
__________________
Знаки препинания ставьте как Вам удобно.
С уважением, IvanSCM.
(Offline)
 
Ответить с цитированием
Старый 29.03.2010, 14:03   #5
Жека
Дэвелопер
 
Регистрация: 04.09.2005
Адрес: Красноярск
Сообщений: 1,376
Написано 491 полезных сообщений
(для 886 пользователей)
Ответ: Кодивка мидлета и связь через интернет.

Перед отправкой строк на сервер прогоняешь их через эту функцию.
text = fnSimpleUTFToAscii(String text);
А при получении строк от сервера делаешь обратную штуку, т.е. из Ascii переводишь в UTF.
text = fnSimpleAsciiToUTF(String text);
Код функции может быть таким:
public static String fnSimpleAsciiToUTF(String text)
{
    String str = "";
    int count = text.length();
    char smb;
    for(int k=0;k<count;++k)
    {
        smb = text.charAt(k);
        if(smb >= 192 && smb <= 255)
            str += String.valueOf(smb - 192 + 1040);
        else if(smb == 168) //Ё
            str += String.valueOf(1025);
        else if(smb == 184) //ё
            str += String.valueOf(1105);
        else
            str += String.valueOf(smb);
    }
    return str;
}
(Offline)
 
Ответить с цитированием
Ответ


Опции темы

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


Часовой пояс GMT +4, время: 17:09.


vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot
Style crйe par Allan - vBulletin-Ressources.com