![]() |
|
Модераторы: LSD, AntonSaburov |
![]()
|
|
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Есть строка из русских букв, правильно отображающаяся в консольке; напечатать ее же в Окне Приложения(напр. в JTextArea).
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Телепаты в отпуске! Опиши проблему подробно, и начни с того какая ОС.
-------------------- 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. |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Ну тогда смотри:
В файле "DataUsers" есть предложение на руссском языке и ...
напечатать строку "s", в JTextArea. ОС - Windows XP(но нужно, чтоб работало и под *nix). -------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Проблема в том, что по умолчанию консоль в XP, по умолчанию имеет кодировку Cp866, а у системы умолчальная кодировка Cp1251. Отсюда выводы:
1. У тебя неправильная кодировка исходников. У тебя исходники сохранены в кодировке Cp866, а компилируешь ты их как исходники в Cp1251. Надо или изменить кодировку исходников, или при компиляции указывать что они в Cp866. 2. Чтобы в консоли все нормально отображалось, надо или изменить кодировку консоли: в консоли набрать ChCp 1251 и установить для консольного окна шрифт LucidaConsole. Или указать Java что у системы умолчальная кодировка Cp866: запускать с параметром -Dfile.encoding=Cp866. -------------------- 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. |
|||
|
||||
| NextAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.8.2005 Где: Украина, г. Одесс а Репутация: 1 Всего: 3 |
можно так:
у меня работало при выводе на экран в графике, думаю должно работать и с консолью. кроме того можно создать файл настроек программы и вбить туда InEncoding и OutEncoding дабы не париться потом Это сообщение отредактировал(а) NextAlex - 21.7.2006, 22:46 --------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ... |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Плохое решение: двойное перекодирование, если InEncoding не поддерживает часть символов, а OutEncoding их поддерживает, то мы их потеряем (они будут заменены на знаки вопроса). Да и вообще это неправильно, порождать неправильно декодированную строку, чтобы она нормально отобразилась в неправильно настроенный PrintWriter. Уж лучше создать свой собственный:
Вобще, эти способы плохи тем, что порождают разный код под разные ОС. А поскольку проблема в ОС, то и решать ее надо на уровне ОС. -------------------- 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. |
|||
|
||||
| NextAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.8.2005 Где: Украина, г. Одесс а Репутация: 1 Всего: 3 |
позволь не согласиться - задача Antropoid как программера не состоит в настройке системы под которой будет работать программа - в данном случае ему нужна прога с максимальной гибкостью, работа которой (в идеале) не зависит от настроек операционки. Так что пока твой вариант с PrintWriter максимально приближен к цели. Кстати я раньше где-то встречал определение кодировки консоли ... щас поищу --------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ... |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Вы знаете, мне вариант NextAlexa больше нравится. Не понятны возражения LSD: двойное перекодирование, если InEncoding не поддерживает часть символов, а OutEncoding их поддерживает, то мы их потеряем (они будут заменены на знаки вопроса). В моем случае InEncoding = Cp866, а Outcoding = Cp1251,- в моем приложени работа будет производится с русскими буквами и с арабскими(
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| LSD |
|
||||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
Такая проблема, есть только под Windows и только с некоторыми языками. В английской версии все будет нормально (и там и там ASCII), равно как и в Linux (там кодировки совпадают). Если вывод перенаправить в файл, то таких проблем тоже не будет. Это именно косяк Windows, консольные Windows приложения тоже сталкиваются с такой проблемой. Поэтому я и считаю, что "лечить" надо Windows, а не программу.
А вот это интерестно, единственное, что я на эту тему слышал, так это java.io.Console из JDK 1.6. Добавлено @ 14:59 С цифрами и буквами проблем быть не должно, а вот с другими символами очень может быть. Запусти в консоли:
-------------------- 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. |
||||
|
|||||
| NextAlex |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 121 Регистрация: 10.8.2005 Где: Украина, г. Одесс а Репутация: 1 Всего: 3 |
не нашел я определение кодировки консоли ...
может просто с чем-то перепутал ... --------------------
Говорила мама: "Учись играть на скрипке". Не хотел носить ноты - будешь носить пианино ... |
|||
|
||||
| Antropoid |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 786 Регистрация: 1.6.2006 Где: &Ukraine==Ode ssa Репутация: 2 Всего: 16 |
Ну и не надо - вопрос-то уже решенный!
-------------------- ![]() Задыхаясь от восторга заниматься чепухой. |
|||
|
||||
| dipsy |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 283 Регистрация: 13.1.2005 Где: Нижний Новгород Репутация: нет Всего: нет |
Мне нужно поменять кодировку файла. Пытаюсь сделать вышеописанным методом:
но в результате все русские символы заменяются на знаки вопроса. в чём ошибка? |
|||
|
||||
| LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 210 Всего: 538 |
-------------------- 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. |
|||
|
||||
![]()
|
| Правила форума "Java" | |
|
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |