Форум программистов, компьютерный форум, киберфорум
Batch (CMD/BAT)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
1

Java выдает в консоль результат в кодировке UTF-8. Что делать?

17.03.2015, 09:30. Показов 4403. Ответов 4
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Уж извините, на форуме нигде раздела BAT не нашел, пишу сюда! Модераторы, переместите, если нужно.

Проблема просто выше моего уровня ( сутки бьюсь сижу. Строю сервер Майнкрафт, новый, но не суть... Написал такой лаунчер типа, консольный на BAT так вот, сам сервер работает на UTF-8 и передает, как видно на коде ниже в таком же формате. А BAT мой, как я не старался, обрабатывает все ТОЛЬКО в DOS! Писал я в начале и chcp 1251 и другие пытался и >null пробовал, эксперементировал сегодня весь день, только вот что. Весь русский текст из моего батника то он читает нормально, это легко, а как только срабатывает запуск jar-ника сервера и начинается прием данных - он UTF-8 его перекрывает своим 1251 или чем угодно, но данные с игры все кракозябрами ( Итак: Мои русский текст нормально в батнике отображается, русский текст в игре и во всех конфигах нормально работает, а русский текст из игры, что передается в батник извращается той самой командой в :START

Подскажите, мастера, как мне выкрутиться?!

Вот текст моего батника:

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
@echo off
 
SetLocal EnableExtensions enabledelayedexpansion
 
title Mine Server (2015)
 
if not exist ServerStartLog.txt (echo ============= >>ServerStartLog.txt
echo Сервер старт, *время: >>ServerStartLog.txt
date /t>>ServerStartLog.txt & time /t>>ServerStartLog.txt
) else (echo ============= >>ServerStartLog.txt
echo Сервер старт, *время: >>ServerStartLog.txt
date /t >>ServerStartLog.txt & time /t>>ServerStartLog.txt)
 
mode con: cols=160 lines=60
COLOR 0a
echo   *******************************************************************
echo   *                         Майнкрафт 1.7.10 Сервер.                       *
echo   *******************************************************************
 
:test
if exist cauldron-1.7.10.jar (goto test2
) else (echo Невозможно найти мастер-файл "cauldron-1.7.10.jar"
goto test2
)
 
:test2
if exist "%ProgramFiles%\Java\jre7\bin\java.exe" (goto start
) else (echo Невозможно найти "Java7"
goto test
)
 
:start
"%ProgramFiles%\Java\jre7\bin\java.exe" -Xmx4G -Dfile.encoding=UTF-8 -Dfml.queryResult=confirm -jar cauldron-1.7.10.jar
 
:exit
choice /c ER /m "Выити (E) или рестарт (R)?"
if %errorlevel%==1 (echo Сервер остановлен в: >>ServerStartLog.txt
date /t >>ServerStartLog.txt & time /t>>ServerStartLog.txt
echo ============= >>ServerStartLog.txt
exit)
А вот что он мне выдает при работе программы, видно что мой русский из батника норм, а русский из игры уже искорежен:

Код
  *******************************************************************
  *                       Майнкрафт 1.7.10 Сервер.                    *
  *******************************************************************
[00:31:55 INFO]: Loading tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
[00:31:55 INFO]: Using primary tweak class name cpw.mods.fml.common.launcher.FMLServerTweaker
[00:31:55 INFO]: Calling tweak class cpw.mods.fml.common.launcher.FMLServerTweaker
[00:31:55 INFO]: Forge Mod Loader version 7.10.88.1307 for Minecraft 1.7.10 loading
[00:31:55 INFO]: Java is Java HotSpot(TM) 64-Bit Server VM, version 1.7.0_65, running on Windows 8.1:amd64:6.3, installed at C:\Program Files\Java\jre7
[00:31:59 INFO]: Loading tweak class name cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[00:31:59 INFO]: Loading tweak class name cpw.mods.fml.common.launcher.FMLDeobfTweaker
[00:31:59 INFO]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[00:31:59 INFO]: Calling tweak class cpw.mods.fml.common.launcher.FMLInjectionAndSortingTweaker
[00:32:01 INFO]: Loaded library ejml-0.23.jar.
............
[00:39:38 INFO]: [L]<Kirill> Test Russkogo: Привет всем! Меня зовут Кирилл.
[00:39:38 INFO]: [L]<Терраформер Kirill> Test Russkogo: Привет всем! Меня зовут Кирилл.
[00:40:01 INFO]: Kirill lost connection: Disconnected
[00:40:01 INFO]: Kirill удалился..
Добавлено через 9 часов 46 минут
Дополняю: если я удалю из СТАРТа -Dfile.encoding=UTF-8, то все будет работать! Кроме нескольких конфигураций плагинов сервера и вообще некоторые начнут глючить, пропадет русификация на парочке... А сейчас, в этом режиме все более стабильно. Но я уже вот не уверен что это лучше ;(
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.03.2015, 09:30
Ответы с готовыми решениями:

Чтение файла в кодировке utf-8 и вывод в консоль
Здорова! Пытаюсь прочитать файл в кодировке utf-8 (вот он ) и вывожу его в консоль, ничего не...

Sed: не выводится в консоль stdout в кодировке UTF-8
Здравствуйте! Имеется текст, содержащий символы Unicode. Вывожу из буфера на консоль утилитой...

Задача: считать xml-файл в DOM, кое-что там подправить, записать результат обратно в той же кодировке.
Задача: считать xml-файл в DOM, кое-что там подправить, записать результат обратно в той же...

Пытаюсь разделить диск акронисом,выдаёт ошибки suderror и т.д,что делать? Много программ перепробовал,но что-то показыва
Пытаюсь разделить диск акронисом,выдаёт ошибки suderror и т.д,что делать? Много программ...

4
Эксперт WindowsАвтор FAQ
17996 / 7697 / 892
Регистрация: 25.12.2011
Сообщений: 11,470
Записей в блоге: 16
17.03.2015, 11:04 2
Если перед вызовом Джавы воткнуть
Bash
1
chcp 65001
?
0
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
17.03.2015, 12:10  [ТС] 3
Цитата Сообщение от Dragokas Посмотреть сообщение
Если перед вызовом Джавы воткнуть
Bash
1
chcp 65001
?
Да, но за ним все равно будет команда, конвертирующая все в ЮТФ-8...

-------------------
Проверил - нет эффекта. Консоль исправна. Проблема в приеме особом входящих данных, которые никак не исправить...
Но! У меня появилась идея!

Скажите, как мне выводить старт в новое БАТ окошко? Какая там команда чтобы он вывод на новое окно конвертировал в ДОС снова? Можно так сделать вообще?
0
5986 / 1995 / 323
Регистрация: 10.12.2013
Сообщений: 6,875
17.03.2015, 12:23 4
а ещё лучше(причём намного), напиши запускалку на Java, раз уж последняя уже установлена.

Добавлено через 3 минуты
Цитата Сообщение от KiraLis39 Посмотреть сообщение
Да, но за ним все равно будет команда, конвертирующая все в ЮТФ-8.
и очень хорошо; 65001 - это консольная кодовая страница для UTF-8.

( шрифт в окне ещё поменяй на TrueType.)

Добавлено через 6 минут
Цитата Сообщение от KiraLis39 Посмотреть сообщение
Проверил - нет эффекта. Консоль исправна. Проблема в приеме особом входящих данных, которые никак не исправить...
Да, это так; chcp изменяет кодировку только консольного вывода, а ввод остаётся в кодировке 1251.
3
9 / 10 / 1
Регистрация: 23.07.2014
Сообщений: 346
17.03.2015, 12:47  [ТС] 5
Цитата Сообщение от volodin661 Посмотреть сообщение
Да, это так; chcp изменяет кодировку только консольного вывода, а ввод остаётся в кодировке 1251.
Хорошо, попробуем. Так что на счет вывода нового окна с перекодировкой Java? Можно? Сейчас мне пришлось вывести весь потом в текстовик, создает при каждом запуске серва новый лог-файл с датой, там я просто меняю кодировку и читаю русский, но хотелось бы не возиться так уж слильно..

Добавлено через 7 минут
Цитата Сообщение от KiraLis39 Посмотреть сообщение
мне пришлось вывести весь потом в текстовик
не потом а поток, опечатка.

Добавлено через 3 минуты
Блин, сработало! Не знаю, как но заработало! Спасибо огромное, сам бы никогда не нашел, а что это вообще за кодировка такая? UTF-8 так пишется?

Добавлено через 1 минуту
Я писал chcp UTF-8, думал сработает..
0
17.03.2015, 12:47
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
17.03.2015, 12:47
Помогаю со студенческими работами здесь

Выдает ошибку что делать?
jtablesession::Store Failed DB function failed with error number 1054 Unknown column 'client_id'...

Выдает ошибки,что делать?
Задача звучит так Дана строка, состоящая из групп нулей и единиц. Найти и вывести на экран группы...

Выдаёт ошибку.Что делать?
import random while True: Min = int(input(&quot;Минимальное число для угадывания: &quot;)) Max =...

Выдает ошибку, что делать?
procedure TForm1.FormCreate(Sender: TObject); var VolName, FileSysName :array of Char;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru