For older versions of NetBeans and Java, the steps described in Java Console Output with UTF-8 used to work.
Basically you could use -Dfile.encoding=UTF-8 and add it to the NetBeans config file and also as a project Java VM parameter.
Now for Java 17 and Java 18, you have to use this instead: sun.stdout.encoding=UTF-8. So, specifically, that means:
-J-Dsun.stdout.encoding=UTF-8-Dsun.stdout.encoding=UTF-8The netbeans.conf file can be found in a subdirectory where NetBeans was installed. On Windows, this is typically:
C:\Program Files\NetBeans-16\netbeans\etc\netbeans.conf
For Java 19 onwards, use this:
-Dstdout.encoding=UTF-8
(In other words, drop the sun. part.)
Don’t forget to also handle stderr:
-Dstderr.encoding=UTF-8
Additional notes are here, including links to NetBeans tickets where the issue is discussed in more detail.
References:
stdout.encoding: Character encoding name forSystem.out. The Java runtime can be started with the system property set to UTF-8, starting it with the property set to another value leads to undefined behavior.
These changes are driven by JEP 400: UTF-8 by Default.
See also the Java 19 Internationalization Guide.