Obecnie rozwijam projekt o szachach. Głównym pomysłem jest użycie go na konsoli jako cmd. Obecnie działa z tablicą [8] [8], przechowuję na nim "szachy". Ale głównym problemem jest: Kiedy ...

-1
Josué Campos 14 kwiecień 2021, 06:59

1 odpowiedź

Najlepsza odpowiedź

Jest skomplikowany, bardzo skomplikowany, i różni się oni różni się również przez wersję (Windows 7 VS 10) i różni się na przykład przez poziom poprawki (np. Windows 10 przed i po Patch 2004).

Pozwól mi więc zaoszczędzić godziny dalszego bólu serca, sugerując, że korzystasz z interfejsu użytkownika zamiast tego, gdzie można kontrolować podstawowy zestaw znaków. Na przykład, używając huśtawki lub javafx.


Jeśli jednak nalegasz na korzystanie z konsoli, musisz wziąć szereg kroków.

Pierwsza istota użycia PrintWriter w kodzie, aby zapisać znaki za pomocą poprawnego kodowania:

PrintWriter consoleOut = new PrintWriter(new OutputStreamWriter(System.out, StandardCharsets.UTF_8));
consoleOut.println("your character here");

Następnym krokiem jest wstępnie skonfigurowanie konsoli, aby użyć zestawu znaków. Na przykład w systemie Windows możesz użyć polecenia CHCP przed uruchomieniem pliku JAR:

chcp 65001
java -jar .....

Ale nie tylko, powinieneś użyć flagi Dfile.encoding, gdy rozpoczynasz słoik:

java -Dfile.encoding=UTF-8 -jar yourChessApplciation.jar

Obecnie zakładając, że masz wszystkie te kroki, może działać, ale może nie. Musisz także upewnić się, że wszystkie pliki źródłowe są zakodowane w UTF-8. Nie pójdę tu tutaj, ponieważ różni się to przez to IDE, ale jeśli używasz czegoś takiego jak NetBeans, możesz skonfigurować kodowanie źródła w Właściwości projektu.

Zachęciłbym również do korzystania z definicji znaków Unicode, a nie rzeczywisty symbol w kodzie:

//Avoid this, it may fail for a number of reasons (mostly encoding related)
consoleOut.println("♜");
//The better way to write the character using the unicode definition
consoleOut.println("\u265C");

Teraz nawet z tym wszystkim, nadal musisz upewnić się, że wybrana konsola używa właściwego zestawu znaków. Oto kroki, które należy przestrzegać dla PowerShell: Korzystanie z kodowania UTF-8 (CHCP 65001) w wierszu polecenia / Windows PowerShell (Windows 10) lub dla systemu Windows CMD możesz spojrzeć tutaj:

A następnie uruchom swój skompilowany plik JAR w konsoli (PowerShell w tym przykładzie) coś takiego (nie musisz użyć chcp 65001, jeśli skonfigurowałeś poprawnie konsolę PowerShell):

chcp 65001
java -Dfile.encoding=UTF-8 -jar yourChessApplciation.jar

A produkt powinien podać następujący wynik:

Korzystanie z wyjścia UTF_8 z postaci: ♜

Korzystanie z wyjścia UTF_8 za pomocą definicji Unicode: ♜

Ale może jeszcze nie pokazać się poprawnie, w którym to przypadku zobacz moją sekcję otwarcia dotyczącą korzystania z interfejsu użytkownika lub spróbuj innej konsoli ... jest skomplikowany.

0
sorifiend 14 kwiecień 2021, 06:01