AlexNest
@AlexNest
Работаю с Python/Django

Как в java выводить кириллицу?

Начал изучать java.
Начал писать простенький код для решения квадратных уравнений. При попытке вывести в консоль строку с кириллицей получается следующее:
Вывод в консоль
C:\JAVA\equals>gradle run

> Task :run
я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜я┐╜: 1 * x + 2 * x + 3 = 0
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
C:\JAVA\equals>winver

C:\JAVA\equals>

В интернете нашел несколько решений с использованием PrintStream.
(Пытался объявлять и в Main/Solver по отдельности и вместе)
Код
//Main.java
package equal;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class Main {
		public static void main(String[] args) throws UnsupportedEncodingException {
			Solver solver = new Solver(1,2,3);
		}	
}

package equal;

import java.io.PrintStream;
import java.io.UnsupportedEncodingException;

public class Solver {
	private int a;
	private int b;
	private int c;
//Solver.java
	public Solver(int a, int b, int c) throws UnsupportedEncodingException {
		PrintStream printStream = new PrintStream(System.out, true, "UTF-8"); // cp866 тоже не работает
		this.a = a;
		this.b = b;
		this.c = c;

		printStream.printf("Уравение: %d * x + %d * x + %d = 0", a, b, c);
	}
	}
}
//build.gradle
apply plugin: 'java'
apply plugin: 'application'
sourceSets.main.java.srcDirs = ['src']
mainClassName = 'equal.Main'


jar {
	manifest.attributes("Main-Class": mainClassName);
}

Однако результат почти такой-же, как и без него:
//utf-8
 Task :run
╨г╤А╨░╨▓╨╡╨╜╨╕╨╡: 1 * x + 2 * x + 3 = 0
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed


//cp866
C:\JAVA\equals>gradle run

> Task :run
я┐╜равя┐╜я┐╜я┐╜я┐╜: 1 * x + 2 * x + 3 = 0
BUILD SUCCESSFUL in 1s
2 actionable tasks: 2 executed
C:\JAVA\equals>

Конфигурация:
- oracleJDK 18
- gradle 7.5.1
- win 10 1809
  • Вопрос задан
  • 298 просмотров
Решения вопроса 3
xez
@xez Куратор тега Java
TL Junior Roo
Больше похоже на то, что ваша консоль не поддерживает UTF-8
Попробуйте Windows-1252
Ответ написан
mayton2019
@mayton2019 Куратор тега Java
Bigdata Engineer
А так?

printStream.printf("\u0423\u0440\u0430\u0432\u0435\u043d\u0438\u0435: %d * x + %d * x + %d = 0", a, b, c);
Ответ написан
AlexNest
@AlexNest Автор вопроса
Работаю с Python/Django
Проблема была в gradle.
При запуске через gradle run кодировка ломалась:
C:\JAVA\equals>gradle run

> Task :run
��������: 1 * x + 2 * x + 3 = 0
BUILD SUCCESSFUL in 1s
2 actionable tasks: 1 executed, 1 up-to-date
C:\JAVA\equals>cd build\libs

Но после сборки в jar, при запуске через java -jar все пришло в норму:
C:\JAVA\equals\build\libs>java -jar equals.jar
Уравение: 1 * x + 2 * x + 3 = 0
C:\JAVA\equals\build\libs>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Bell Integrator Ульяновск
До 400 000 ₽
Bell Integrator Хабаровск
До 400 000 ₽
Bell Integrator Ижевск
До 400 000 ₽
22 мая 2024, в 00:08
2500 руб./за проект
21 мая 2024, в 23:47
30000 руб./за проект