|
Java форум JavaTalks форум программистов
|
|
|
|
| Предыдущая тема :: Следующая тема |
| Автор |
Сообщение |
шкипер : 1960 Java Developer Откуда: Харьков
|
Июл 10, 2008 10:10 |
|
|
Есть классический текст. Могу похвалиться - я даже немного соавтор (исправил аж одну грамматическую ошибку )
http://www.jug.ru/servlets/index?page=rus#files
Но он немного устарел - с 1.5 PrintStream позволяет указать кодировку потока. Потому я рекомендую сделать так:
| Код: |
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(System.out, true, "Cp866"));
System.setErr(new PrintStream(System.err, true, "Cp866"));
... |
Если программа потенциально будет работать не только в Windows - необходимо дописать проверку операционки. _________________
aka ur6lad |
|
|
|
 |
Louis : 222 Новичок
|
Июл 10, 2008 10:47 |
|
|
| шкипер писал(а): |
Есть классический текст. Могу похвалиться - я даже немного соавтор (исправил аж одну грамматическую ошибку )
http://www.jug.ru/servlets/index?page=rus#files
Но он немного устарел - с 1.5 PrintStream позволяет указать кодировку потока. Потому я рекомендую сделать так:
| Код: |
public static void main(String[] args) throws Exception {
System.setOut(new PrintStream(System.out, true, "Cp866"));
System.setErr(new PrintStream(System.err, true, "Cp866"));
... |
Если программа потенциально будет работать не только в Windows - необходимо дописать проверку операционки. |
Пишу в точности как Вы предложили:
| Код: |
System.setOut(new PrintStream(System.out, true, "Cp866"));
System.setErr(new PrintStream(System.err, true, "Cp866")); |
и ничего... Козявки стали другие:
| Цитата: |
‘¨á⥬ †¨«¨é®-ª®¬¬ã «ì®£® å®§ï©áâ¢
1. ‚®©â¨
2. ‚ë室
|
Локаль русская... ну что же не так??? |
|
|
|
 |
шкипер : 1960 Java Developer Откуда: Харьков
|
Июл 10, 2008 11:10 |
|
|
Очень простой тест:
Имеем файл test.properties c таким содержимым:
| Цитата: |
| test.property=\u0442\u0435\u0441\u0442 - \u043e\u043d \u0438 \u0432 \u0410\u0444\u0440\u0438\u043a\u0435 \u0442\u0435\u0441\u0442 |
и класс
| Код: |
import java.io.PrintStream;
import java.util.Locale;
import java.util.ResourceBundle;
public class TestConsoleEncoding {
public static void main(String args[]) throws Exception {
Locale current = Locale.getDefault();
ResourceBundle bundle = ResourceBundle.getBundle("test", current);
System.out.println("АаБбВвГг");
System.out.println(bundle.getString("test.property"));
System.setOut(new PrintStream(System.out, true, "Cp866"));
System.setErr(new PrintStream(System.err, true, "Cp866"));
System.out.println("АаБбВвГг");
System.out.println(bundle.getString("test.property"));
}
} |
И скомпилированный класс и файл свойств должны лежать в одном каталоге.
Запускаем:
| Код: |
C:\myclasses>java -cp . TestConsoleEncoding
└р┴с┬т├у
ЄхёЄ - юэ ш т └ЇЁшъх ЄхёЄ
АаБбВвГг
тест - он и в Африке тест |
Тест пройден.
Резюме: то ли переустановка вывода на консоль не делается, то ли вывод делается в обход класса System.out. Вы случайно не через java.io.Console пишите? _________________
aka ur6lad |
|
|
|
 |
Louis : 222 Новичок
|
Июл 10, 2008 11:44 |
|
|
| Цитата: |
| Очень простой тест: |
Незнаю что думать....
у меня вышло
| Цитата: |
ÀàÁáÂâÃã
òåñò - îí è â Àôðèêå òåñò
€ �¡‚¢ƒ£
â¥áâ - ® ¨ ¢ €äਪ¥ â¥áâ
|
Скопировал Ваш код в созданный проект в netBeans. |
|
|
|
 |
шкипер : 1960 Java Developer Откуда: Харьков
|
Июл 10, 2008 11:52 |
|
|
| Louis писал(а): |
у меня вышло
| Цитата: |
ÀàÁáÂâÃã
...
€ �¡‚¢ƒ£
...
|
|
То, что скомпилированный код (я имею ввиду строку "АаБбВвГг") выводит неправильный текст ПМСМ говорит что у вас неправильные параметры компиляции исходников: где-то или указан неправильный encoding исходников или он не указан, а java берёт по дефолту локаль, которая совсем не ru_RU.cp1251 (например у вас американская винда с en_US.ISO-8859-1). Или java берет правильно (cp1251), но исходники у вас в юникоде ( UTF-8 ).
Что же касается строчки из ResourceBundle ... даже не знаю что сказать.
Update:
что написано в системном свойстве file.encoding? _________________
aka ur6lad |
|
|
|
 |
Louis : 222 Новичок
|
Июл 10, 2008 12:16 |
|
|
| Цитата: |
| что написано в системном свойстве file.encoding? |
Как его посмотреть??
в encoding проекта - UTF-8
UPD:
разобрался
Cp1251
И вот еще что:
Я перезапустил NetBeans и картина поменялась:
| Цитата: |
АаБбВвГг
тест - он и в Африке тест
Ђ ЃЎ‚ўѓЈ
вҐбв - ® Ё ў ЂдаЁЄҐ вҐбв
|
до
| Код: |
System.setOut(new PrintStream(System.out, true, "Cp866"));
System.setErr(new PrintStream(System.err, true, "Cp866")); |
пишет на русском - потом на козявочном |
|
|
|
 |
Louis : 222 Новичок
|
Июл 22, 2008 2:14 |
|
|
UPD
При запуске из netBeans упорно пишет козявками.
Если запускать из коммандной строки - все замечательно!
В чем же дело? |
|
|
|
 |
шкипер : 1960 Java Developer Откуда: Харьков
|
Июл 22, 2008 8:09 |
|
|
Подозреваю, что у нетбинса своя консоль. И кодировка там совсем не 866. Да? _________________
aka ur6lad |
|
|
|
 |
Louis : 222 Новичок
|
Июл 22, 2008 11:25 |
|
|
| шкипер писал(а): |
| Подозреваю, что у нетбинса своя консоль. И кодировка там совсем не 866. Да? |
ответ бы в Вашем посте :
| Цитата: |
| что написано в системном свойстве file.encoding? |
и моем ответе:
|
|
|
|
 |
Golovastik : 43 Новичок
|
Янв 08, 2011 20:58 |
|
|
Ребята, как сделать именно ВВОД на русском?
Именно ВВОД |
|
|
|
 |
|
|
Страница 2 из 2 На страницу Пред. 1, 2 |
Список форумов
-> Локализация (l10n & i18n) |
|
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете голосовать в опросах
|
|