问题描述
我相信 13 多年前,从 Windows ME 开始,就可以在控制台应用程序上显示阿拉伯字符.
现在我在 Windows 8 上使用 Visual Studio 2013,并且显示以下代码:
???????
Console.OutputEncoding = System.Text.Encoding.Unicode;Console.WriteLine("مرحبا بك");
无论如何要在控制台输出中显示阿拉伯字符?
要使其正常工作,需要解决几个问题.
- 您需要一种同时支持阿拉伯语和 Windows 控制台的字体.
请参阅知识库文章:我想你可以使用像这样的函数:
static string Reverse(string text){if (text == null) 返回 null;char[] 数组 = text.ToCharArray();Array.Reverse(数组);返回新字符串(数组);}
然后做
Console.OutputEncoding = System.Text.Encoding.Unicode;Console.WriteLine(Reverse("مرحبا بك"));
I believe it was possible to show Arabic characters on a console application 13+ years ago, since the days of Windows ME.
Now i am using Visual Studio 2013, On a Windows 8, and the following code shows:
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine("مرحبا بك");
Is there anyway to show Arabic characters in the console output?
There are several issues to resolve to get this to work.
- You need a font that supports both Arabic AND the windows console.
See KB : Necessary criteria for fonts to be available in a command window
- You must install the font.
For testing, I used DejaVu Mono, which is one of the few that supports Arabic. Arabic is a tough language to make a monotype font with since the aesthetics of the language do not work well with a fixed width for each character. Nevertheless, this font makes an honest effort. For other possible alternatives, see :
complete, monospaced Unicode font?
The font must be installed in the normal way for your version of Windows (in Vista/7/8 this is right-click, Install
on the .ttf file). Once this is done, you have to follow the directions in the KB.
- Registry Editor --> HKLM\Software\Microsoft\WindowsNT\CurrentVersion\Console\TrueTypeFont
- Add a new string value named "
000
" with the valueDejaVu Sans Mono
- Reboot
Once you've rebooted, you can change the font in the console by selecting "Properties" from the console menu and changing the font in the "Font" tab.
Result.
... so after all that, we discover that the console does not support Right-To-Left languages. I guess you could use a function like :
static string Reverse(string text)
{
if (text == null) return null;
char[] array = text.ToCharArray();
Array.Reverse(array);
return new String(array);
}
and then do
Console.OutputEncoding = System.Text.Encoding.Unicode;
Console.WriteLine(Reverse("مرحبا بك"));
这篇关于在 C# 控制台应用程序中显示阿拉伯字符的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!