Модераторы: javastic, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кодировка контактов в samsung, Создание контактов jsr75 PIM 
:(
    Опции темы
indened
Дата 22.6.2010, 08:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.5.2009

Репутация: нет
Всего: нет



Всем привет,

В очередной раз столкнулся с самсунгом и его багами, третий день бьюсь за право существования кириллицы в контактах телефона (тестил на 8 моделях) .
При создании контакта через записную книжку проблем с кириллицей нет, но при создании средствами jsr75 PIM, т.е. из мидлета кириллические символы приобретают кроказябную форму.

Как я выяснил,процесс происходит следующим образом, полученная строка преобразуются в utf8(если взять два символа кроказябры и сравнить их код с utf8, то получится нужный символ из кириллицы) и
дальше эта строка интерпретируются как iso8859-1(кодировка платформы), например, символ 'A' - \u0410, далее в utf8 - 0xd090, далее iso8859-1 - 0xd0,0x90, если процесс развернуть в обратную сторону, 
то получим нормальный символ на экране т.е. достаем строку из контакта, преобразуем ее в массив байт,указав кодировку iso8859-1, создаем новую строку и интерпретируем ее как закодированную в utf8,
вух,иногда сам не понмаю,что пишу).
Из этого получается, что либо некоторые контакты могут храниться в iso8859-1, либо реализация интерпретирует символы как iso8859-1, либо у меня мозг включил блокировку.

Облазил гугл,ничего по этой теме не нашел, за исключением одного поста на сайте самсунга для разработчиков и тот без ответа.
Сложилось такое впечатление,что этим методом создания контактов либо никто не пользуется, либо нас двое(второй, кто запостил на самсунге) таких у кого эта проблема.

Помогите,чем можете)
Спасибо!

PM MAIL   Вверх
sanboll
Дата 22.6.2010, 14:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 15.6.2010

Репутация: 1
Всего: 1



А ты не пробовал метод String getBytes(String encoding) ?
Я не уверен, что это поможет, но всё же попробуй.

Код

 public String decodeString(String s)
{
byte[] b = null;
try {
  b = s.getBytes("UTF-8");
 } catch(java.io.UnsupportedEncodingException ex)
{
  return null;
}

return new String(b, 0, b.length);
}



PM MAIL   Вверх
indened
Дата 22.6.2010, 19:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 14
Регистрация: 25.5.2009

Репутация: нет
Всего: нет



Спасибо за помощь,

Проблем с декодированием сторки из контакта у меня нет, я декодирую строку в нормальный вид, используя тот метод,который вы указали,
а вот запихнуть ее обратно не получается.
Тут, что-то более зловещие smile 

Единственный выход из этой проблемы, который я реализовал - это транслитерация кириллицы.
PM MAIL   Вверх
sanboll
Дата 23.6.2010, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 59
Регистрация: 15.6.2010

Репутация: 1
Всего: 1



Ну, не знаю, попробуй вместо  кодировки "UTF-8" указать "iso8859-1"...
Если не выходит, попробуй так:

Код

public String encode(String s)
{
String TO_UNICODE = "\u0402\u0403\u201a\u201e\u201e\u2026\u2020\u2021\u20ac\u2030\u0409\u2039\u040a\u040c\u040b\u040f\u0452\u2018\u2019\u201c\u201d\u2022\u2013\u2014\u2122\u0459\u203a\u045a\u045c\u045b\u045f \u040e\u045e\u0408\u00a4\u0490\u00a6\u00a7\u0401\u00a9\u0404\u00ab\u00ac\u00ad\u00ae\u0407\u00b0Z\u00b1\u0406\u0456\u0491\u00b5\u00b6\u00b7\u0451\u2116\u0454\u00bb\u0458\u0405\u0455\u0457\u0410\u0411\u0412\u0413\u0414\u0415\u0416\u0417\u0418\u0419\u041a\u041b\u041c\u041d\u041e\u041f\u0420\u0421\u0422\u0423\u0424\u0425\u0426\u0427\u0428\u0429\u042c\u042b\u042a\u042d\u042e\u042f\u0430\u0431\u0432\u0433\u0434\u0435\u0436\u0437\u0438\u0439\u043a\u043b\u043c\u043d\u043e\u043f\u0440\u0441\u0442\u0443\u0444\u0445\u0446\u0447\u0448\u0449\u044a\u044b\u044c\u044d\u044e\u044f";
char[] ch = s.toCharArray();
for(int i = 0; i < ch.length; i++)
{
 if(ch[i] > 128)
  ch[i] = TO_UNICODE.charAt((int)ch[i]);
}
return new String(ch,0,ch.length);
}


PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.