您的代码很好,但有两个问题:
- 您在Command Prompt窗口中使用的字体不能正确支持波斯语字符.
- 波斯语是从右向左书写的,但Command Prompt窗口是从左向右呈现文本的,因此即使您使用适当的字体,波斯语文本也会以相反的方式呈现.
在使用您的样例应用程序时,下面是在我的Command Prompt窗口中使用支持波斯语字符的Courier New字体呈现输出的方式:
请注意,字符呈现正确,但顺序相反.
可能有一种简单的解决方法,可以让字符在Command Prompt窗口中从右向左正确呈现文本,但在任何情况下,更好的替代方法是使用由Microsoft's Terminal utility提供的Command Prompt实现.
如果这样做,则无需进行任何配置更改即可正确呈现应用程序的输出:
备注:
- 我的环境是Windows10,区域设置为United States,默认代码页为65001.我使用JDK 20进行了测试,但任何JDK版本都应该可以.
- 除非出于兼容性原因必须使用传统的Command Prompt窗口,否则请考虑使用Terminal提供的Command Prompt实现.所有类型的文本呈现问题都消失了,因为传统的Command Prompt窗口的一些长期存在的错误/限制已经得到解决.
- 如果您不熟悉终端,这是Microsoft's overview描述:
Windows Terminal is a modern host application for the command-line shells you already love, like Command Prompt, PowerShell, and bash
(via Windows Subsystem for Linux (WSL)). Its main features include
multiple tabs, panes, Unicode and UTF-8 character support, a GPU
accelerated text rendering engine, and the ability to create your own
themes and customize text, colors, backgrounds, and shortcuts.个