Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Java ME (J2ME) > Как передавать русские символы по сети без Unicode |
Автор: maks991 8.8.2010, 08:44 | ||||
Значит, проблема такая. Пишу я болталку, чатик такой скромный. И нужно, конечно же, передавать сообщения, которые содержат русские символы. Так вот, очень хочется сократить количество передаваемых байтов, потому что русские символы в юникоде занимают аж 2 байта! Принимаю сообщения я так:
А передаю вот так:
В общем, как видите, приходится использовать UTF-8, чтобы передавать русские символы и не получать на входе абракадабру. Но меня не устраивают эти 2 байта на символ. Помогите, пожалуйста, решить данную проблему... Может быть, какую-то другую кодировку использовать, или хитрое что-то...я так и не смог осилить. Пытался вместо UTF-8 написать ASCII, думая, что таблица будет локальной и всё хорошо будет, но это не помогло...в телефоне отобразились квадратики вместо букв :( В общем, такая вот проблема. Заранее спасибо за помощь. Добавлено через 2 минуты и 10 секунд Ну то есть очень бы хотелось, чтобы на русский символ приходился тот же 1 байт, как и на латинский. Если что, чат этот будет для двоих ![]() |
Автор: sanboll 8.8.2010, 09:13 |
Чат через bluetooth или через http? Можно использовать DataOutputStream.writeUTF(String UTF) и DataInputStream.readUTF() - там и размер данных указывать не придется |
Автор: maks991 8.8.2010, 10:05 |
Через StreamConnection. Я сокетами делаю. Ну да, знаю про эти методы. Но ведь количество передаваемых байтов всё равно не уменьшится :( Или уменьшится? Добавлено через 12 минут и 53 секунды Так-то есть аська...но я потому и делаю свою болталку, чтобы избавиться от всего лишнего, что мне в ней не нужно. И хочется уменьшить траффик, а то за счёт юникода не такой он маленький... |
Автор: cutwater 8.8.2010, 10:20 |
maks991, откройте для себя сжатие данных. Вас пугает два байта на символ? Вы уверены что это настолько критично в условиях современного мира. На дворе 2010 год. Добавлено через 2 минуты и 20 секунд О мобильных устройствах сначала не приметил. Приношу извинения. В принципе если вам кроме кирилицы и латиницы ничего не нужно, кодируйте однобайтными кодировками, CP1251 (Windows-1251) или KOI8-R, хотя как под мобильными устройствами дела обстоят с кодировками боюсь не осведомлен. |
Автор: maks991 8.8.2010, 10:59 |
Вот, и я про то же... Тоже думал использовать эти кодировки, но как-то не выходит :( Вот cp1251 должна быть прям точно, но как её пользовать правильно, не понимаю :( |
Автор: maks991 8.8.2010, 12:23 |
Вот мне, действительно, только кириллица и латиница нужна...явно можно обойтись одним байтом на символ... Попробовал вместо UTF-8 написать Cp1251, вообще не сработало. |
Автор: cutwater 8.8.2010, 12:34 |
maks991, string.getBytes("Cp1251") не? |
Автор: maks991 8.8.2010, 12:38 |
Нет, не сработало :( Добавлено через 1 минуту и 46 секунд На телефоне русский язык ведь полностью поддерживается...неужели только Unicode... Хотя вроде да, на некоторых моделях нет цп1251, только утф Добавлено через 2 минуты и 20 секунд Может как-то можно из юникода перевести в цп и обратно? Добавлено через 3 минуты и 22 секунды Правда для телефонов желательно поменьше всяких этих сложных преобразований, ресурсы-то ограниченные всё же |
Автор: maks991 8.8.2010, 16:08 |
Всё, товарищи, проблема решена. Причём решена тупейшим образом ![]() ![]() ![]() Всем, кто пытался помочь, спасибо! |
Автор: maks991 9.8.2010, 07:04 |
Хаха, ну ![]() ![]() |