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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Немецкая ОС, JAVA и кодировка 
:(
    Опции темы
sergejzr
Дата 5.2.2006, 14:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Странности меня преследуют.
По идее ява работает с UTF-8, ведь так?
Я настроил всё под UTF-8 (test.java правильно в UTF-8, специально проверил)
Теперэ по идее с кириллицей проблем быть не должно, думаю я.
Но нижеприведённый код производит знаки вопроса и в файле и в консоли. Ну консоль, она немецкая, я в принципе и не ожидаю чудес, но ведь в файл должно писаться нормально?

Вообщето следующей задачей бидет на сокет вывести UTF-8. Но сперва надо проблему с файлами решитэ. А она решаема! Еклипса ведь сохраняет test.java правильно в UTF-8.

Какие будут соображения? Может еклипсу надо настроить как нибудь?
Код

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;
import java.io.UnsupportedEncodingException;

public class test {


    public static void main(String[] args) {
    

    String str=new String("Тестим кодировку");
    try {
        File f=new File("c:/test.txt");
        FileWriter fw =new FileWriter(f);
        fw.write(str);
        fw.flush();
        fw.close();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    System.out.println(str);
    }

}



--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 5.2.2006, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(sergej.z @ 5.2.2006, 14:19 Найти цитируемый пост)
Какие будут соображения? Может еклипсу надо настроить как нибудь?

За эклипсу не скажу, а вот при компиляции javac-ом надо указать кодировку которая используется в исходниках javac -encoding, по умолчанию используется системная, а она как я понимаю немецкая, это раз.

А во вторых, FileWriter тоже по использует системную кодировку. Поэтому делай так:
Код
Writer writer = new OutputStreamWriter(new FileOutputStream("c:/test.txt"), "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   Вверх
Nobody
Дата 5.2.2006, 14:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



Когда же все запомнят, что Reader/Writer надо создавать с явным указанием кодировки...
LSD
Может где-нибудь это большими буквами написать?


--------------------
Алгоритм помещения вопросов на форуме
Выражаем спасибо вот ТАК
Use the Source, Luke!
PM MAIL WWW ICQ   Вверх
LSD
Дата 5.2.2006, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Цитата(Nobody @ 5.2.2006, 14:44 Найти цитируемый пост)
Когда же все запомнят, что Reader/Writer надо создавать с явным указанием кодировки...

К сожалению FileWriter-у нельзя указать кодировку, он использует системную. Можно только заменить на комбинацию OutputStreamWriter/FileOutputStream.

Цитата(Nobody @ 5.2.2006, 14:44 Найти цитируемый пост)
Может где-нибудь это большими буквами написать?

В FAQ например. Возмешься за статью о кодировках?


--------------------
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   Вверх
sergejzr
Дата 5.2.2006, 15:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Отлично, в файл пишется! сейчас попробую на сокет, а пока может будут соображения насчёт консоли?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 5.2.2006, 15:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Если речь идет о консоли винды, то:
* в консоли выполняем ChCp 1251 и ставим шрифт Lucida Console
* запускаем программу с ключем -Dfile.encoding=Cp1251

По идее должно сработать.


--------------------
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   Вверх
sergejzr
Дата 6.2.2006, 00:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Продолжение истории.
Всё прекрасно получилось. Странихки генерятся, кодировка совпадает.
Трабла с базой.
База у меня на компе с русской ОС - Виндовс ХР

Получаю строки в странной кодировке и раскодировать уже не могу.
Пробовал разные извращения как например:
"jdbc:mysql://mojcomp:3306/vpf?useUnicode=true&characterEncoding=UTF-8"

Строки - кириллица. Мне надо чтобы он в UTF-8 забирал строки конечно.

Может можно как то узнать или установить кодировку строк из базы?
И как правильно перекодировать потом?


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
LSD
Дата 6.2.2006, 10:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Leprechaun Software Developer
****


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

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



Перекодировкой строк из кодировки СУБД в UTF-16 занимается драйвер, поэтому копать надо в его направлении. Какая кодировка использется в базе?

Цитата(sergej.z @ 6.2.2006, 00:54 Найти цитируемый пост)
Может можно как то узнать или установить кодировку строк из базы?

Ну для начала надо узнать, что за СУБД smile


--------------------
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   Вверх
sergejzr
Дата 6.2.2006, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(LSD @ 6.2.2006, 08:37 Найти цитируемый пост)

Ну для начала надо узнать, что за СУБД

Это MySQL
Цитата(LSD @ 6.2.2006, 08:37 Найти цитируемый пост)

Перекодировкой строк из кодировки СУБД в UTF-16 занимается драйвер, поэтому копать надо в его направлении. Какая кодировка использется в базе?

Xex. Судя по тому, хто говорит конфигурация - UTF-8 Но там каракули. Причём на русской винде (где база стоит) отображается.
Я сейчас страницу перегнал в 1251 взглянут´на безобразие можно (тол´ко сервер переодически включается):
http://84.136.149.78:8080/forum/forumHandler


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 6.2.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



Попробуй первым делом после коннекта провести кверю: SET NAMES 'utf-8'
Добавлено @ 13:20
http://dev.mysql.com/doc/refman/4.1/en/cha...connection.html
Добавлено @ 13:23
Что является фактом, так это то, что в форумской базе(той, которую ты используешь также) неправильно прописан charset и Collation для таблица И столбцов в таблицах. Я не знаю, как так вышло - но это прописалось как-то автоматом неправильно. А менять вручную для каждого столбца более 50 таблиц, плюс у самих таблиц - у меня терпения не хватит.

Может тут собака зарыта?
PM WWW   Вверх
sergejzr
Дата 6.2.2006, 13:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Цитата(Wowa @ 6.2.2006, 11:20 Найти цитируемый пост)

Что является фактом, так это то, что в форумской базе(той, которую ты используешь также) неправильно прописан charset и Collation для таблица И столбцов в таблицах. Я не знаю, как так вышло - но это прописалось как-то автоматом неправильно. А менять вручную для каждого столбца более 50 таблиц, плюс у самих таблиц - у меня терпения не хватит.

Может тут собака зарыта?

А как можно вообще это поменять? ябы попробовал на одной таблице, посмотрел, что выйдет..


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 6.2.2006, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



Цитата(sergej.z @ 6.2.2006, 11:36 Найти цитируемый пост)

А как можно вообще это поменять? ябы попробовал на одной таблице, посмотрел, что выйдет..



http://dev.mysql.com/doc/refman/4.1/en/charset-table.html
http://dev.mysql.com/doc/refman/4.1/en/charset-column.html

Посмотри эти ссылки.. В одной из них:

To change the character set (and collation) for all columns in an existing table, use...
ALTER TABLE tbl_name CONVERT TO CHARACTER SET charset_name [COLLATE collation_name];

Лично у меня вызывает сомнение, что поменяется character set и collation всех столбцов. Я менял это черех пхпмайадмин и менялось только у таблицы, но НЕ у столбцов.
PM WWW   Вверх
sergejzr
Дата 6.2.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Кстати если сеичас кодировку поставит´cp866 в браузере, тогда можно даже кое что прочитать. Но получается как будто ещё лишний байт там.


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Wowa
Дата 6.2.2006, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
Group Icon


Профиль
Группа: Админ
Сообщений: 15017
Регистрация: 14.9.2000
Где: Винград

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



ALTER TABLE mytablename DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci
Добавлено @ 13:42
Хотя вообще я согласен! В первом примере же используется CONVERT TO. Так, что столбцы тоже должны быть обработаны по идее.
PM WWW   Вверх
sergejzr
Дата 6.2.2006, 13:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Un salsero
Group Icon


Профиль
Группа: Админ
Сообщений: 13285
Регистрация: 10.2.2004
Где: Германия г .Ганновер

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



Хмм- никакой реакции. Кстати на странице там имена фроумов я конвертирую сейчас так
name=new String(r.getString("name").getBytes("UTF-8"),"CP1251");
все остальные имена из базы просто копируются. Поэтому там знаки вопросов..


--------------------
PM WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

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

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


 




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


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

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