Ala*_*laa 11 c# unicode arabic console-application
我相信自从Windows ME诞生以来,13年多以前可以在控制台应用程序上显示阿拉伯字符.
现在我使用的是Visual Studio 2013,在Windows 8上,以下代码显示:
????? ??
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine("????? ??");
Run Code Online (Sandbox Code Playgroud)
无论如何在控制台输出中显示阿拉伯字符?
J..*_*... 19
要解决此问题,需要解决几个问题.
请参阅KB:命令窗口中可用字体的必要条件
Run Code Online (Sandbox Code Playgroud)The font must be a fixed-pitch font. The font cannot be an italic font. The font cannot have a negative A or C space. If it is a TrueType font, it must be FF_MODERN. If it is not a TrueType font, it must be OEM_CHARSET.
为了测试,我使用了DejaVu Mono,这是支持阿拉伯语的为数不多的之一.阿拉伯语是制作单色字体的一种强硬语言,因为语言的美学效果不适合每个字符的固定宽度.不过,这种字体是一种诚实的努力.其他可能的替代方案,请参阅:
必须以您的Windows版本的正常方式安装该字体(在Vista/right-click, Install7/8中,这是在.ttf文件中).完成此操作后,您必须按照KB中的说明进行操作.
000" 的新字符串值DejaVu Sans Mono
重新启动后,可以通过从控制台菜单中选择"属性"并更改"字体"选项卡中的字体来更改控制台中的字体.


结果.

...毕竟,我们发现控制台不支持从右到左的语言. 我想你可以使用像这样的函数:
static string Reverse(string text)
{
if (text == null) return null;
char[] array = text.ToCharArray();
Array.Reverse(array);
return new String(array);
}
Run Code Online (Sandbox Code Playgroud)
然后呢
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine(Reverse("????? ??"));
Run Code Online (Sandbox Code Playgroud)
