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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> кодировки 
V
    Опции темы
goodday1941
Дата 12.6.2007, 12:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



такая проблемка:
есть клиент (OS windows и Linux) и есть сервер (OS Linux). 
Кое какая инфа с клиента логируеться... идет вызов функции сервера через RMI... Ну и собсна тут и проблема в логе у мну одни знаки вопроса на данный момент, тоесть кодировка не была распознана...
перепробвал уже массу всякой всячены, но результат пока все тот же :(

последний мой вариант был: перекодируем на клиенте информацию в кодировку cp1251 перелаем ее на сервер тама пишем с помощью PrintWtiter в файл... не пашет уже даже понял причину, PrintWriter пишет в кодеровке по умолчании на системе (что явно не cp1251)  потому и казяблики... в общем все мои махинации пока приводят к: "??? ? ????".

Подскажите другие варианты...

Это сообщение отредактировал(а) goodday1941 - 12.6.2007, 12:17


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 12.6.2007, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



Нарыл еще такие варианты:
на запись - 
Код

PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, true), "cp1251"));

на чтение - 
Код

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "cp1251"));


сейчас буду тестить (:


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
goodday1941
Дата 13.6.2007, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



еще такой вопросик возник:

если к примеру я у JTextField вызываю метод getText(), то в какой кодировке мне возвращаються данные? 


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
fixxer
Дата 13.6.2007, 16:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 672
Регистрация: 14.9.2006
Где: Саратов, Россия

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



goodday1941, строки в Java всегда Unicode. Вопросы возникают при чтении/записи их во внешние источники, например файл, БД


--------------------
user posted image
PM MAIL ICQ   Вверх
goodday1941
Дата 13.6.2007, 16:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



оке пасибо...тода вопрос:
к примеру я беру строку: 
Код

String tmp = textField.getText();

а потом хочу преобразовать в другую кодровку:
Код

new String (tmp.getBytes(), "cp866");

в данном случае tmp.getBytes() берет кодировку по умолчанию в системе на сколько я понял (тоесть для винды win1251)
как мне 100% получить преобразование с unicode в нужную мне кодировку?... код выше этого не делает

Это сообщение отредактировал(а) goodday1941 - 13.6.2007, 16:45


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
LSD
Дата 13.6.2007, 17:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(goodday1941 @  13.6.2007,  17:43 Найти цитируемый пост)
как мне 100% получить преобразование с unicode в нужную мне кодировку?... код выше этого не делает

String.getBytes("UTF-8")
String - это строка, и она всегда находится в одной кодировке и преобразованию не подлежит. Когда ты пишешь и читаешь данные из вне, ты получаешь байты, и тебе надо корректно, преобразовать их в строку, вот и все.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
goodday1941
Дата 13.6.2007, 17:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 709
Регистрация: 16.7.2006
Где: Украина, Киев

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



окей будем тестить! пасибо всем!

Добавлено через 6 минут и 46 секунд
тоесть исходя из ваших слов, как вариант: я беру строку с JTextField в кодировке utf-8 передаю ее на сервер через RMI без изменений потом пишу в файл
Код

PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(file, true), "cp1251"));
pw.print(/*моя строка*/);

далее когда мне нужно считать лог файл я делаю что то по типу:
Код

BufferedReader in = new BufferedReader(new InputStreamReader(new FileInputStream(file), "cp1251"));
        String line;
        while ((line = in.readLine()) != null) {
            log.add(line);
        }

и получаю снова массив строк уже в утф-8?

я правильно вас понял?


--------------------
SCJP 6
PM MAIL ICQ Skype GTalk   Вверх
LSD
Дата 13.6.2007, 23:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


Профиль
Группа: Модератор
Сообщений: 15719
Регистрация: 24.3.2004
Где: Dublin

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



Цитата(goodday1941 @  13.6.2007,  18:59 Найти цитируемый пост)
я правильно вас понял?

Почти, кроме одного момента. Строки в Java всегда храняться в UTF-16.

P.S. И вместо Cp1251 лучше использовать UTF-8.


--------------------
Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




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


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

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