希腊字母在Windows Concole

我正在用C写一个程序,当我在cmd.exe中运行它时,我希望在菜单中有希腊字符。 有人说,为了包含希腊字符,你必须使用一个printf ,像这样:

  printf(charset:IS0-1089:uffe); 

但他们不确定。

有谁知道这是怎么做到的吗?

假设Windows,您可以:

  • 将您的控制台字体设置为Unicode TrueType字体:
  • 使用“ANSI”机制发射数据

此代码打印γειά σου

 #include "windows.h" int main() { SetConsoleOutputCP(1253); //"ANSI" Greek printf("\xE3\xE5\xE9\xDC \xF3\xEF\xF5"); return 0; } 

十六进制代码表示编码为windows-1253时的γειά σου 。 如果使用编辑器将数据保存为windows-1253,则可以使用文字。 另一种方法是使用OEM 737 (实际上是DOS编码)或使用Unicode。

我使用SetConsoleOutputCP来设置控制台代码页,但是可以在运行程序之前键入命令chcp 1253

你可以使用printf打印一个unicode字符:

printf("\u0220\n");

这将打印Ƞ

我认为这可能只适用于你的控制台支持希腊语。 可能你想要做的是将字符映射到希腊语,但使用ASCII。 对于C#,但在C中有相同的想法

913到936 =大写的希腊字母

945到968 =小写希腊字母

阅读更多在Suite101:使用希腊字母和C#:如何正确显示ASCII代码创建C#应用程序| Suite101.com在这个链接 。

一种方法是打印一个宽字符串。 不幸的是,Windows需要一些非标准的设置来完成这个工作。 这段代码在#if块内部完成了这个设置。

 #include <locale.h> #include <stdlib.h> #include <stdio.h> #include <wchar.h> /* This has been reported not to autodetect correctly on tdm-gcc. */ #ifndef MS_STDLIB_BUGS // Allow overriding the autodetection. # if ( _WIN32 || _WIN64 ) # define MS_STDLIB_BUGS 1 # else # define MS_STDLIB_BUGS 0 # endif #endif #if MS_STDLIB_BUGS # include <io.h> # include <fcntl.h> #endif void init_locale(void) // Does magic so that wprintf() can work. { // Constant for fwide(). static const int wide_oriented = 1; #if MS_STDLIB_BUGS // Windows needs a little non-standard magic. static const char locale_name[] = ".1200"; _setmode( _fileno(stdout), _O_WTEXT ); #else // The correct locale name may vary by OS, eg, "en_US.utf8". static const char locale_name[] = ""; #endif setlocale( LC_ALL, locale_name ); fwide( stdout, wide_oriented ); } int main(void) { init_locale(); wprintf(L"μουσάων Ἑλικωνιάδων ἀρχώμεθ᾽\n"); return EXIT_SUCCESS; } 

必须将其保存为带有BOM的UTF-8,以便旧版本的Visual Studio正确读取它。 您的控制台也必须设置为等宽字体统一字体,如Lucida控制台,以正确显示它。 为了在ASCII字符串中混合宽字符串,标准将%ls%lc格式说明符定义为printf() ,尽管我发现这些方法在任何地方都行不通。

另一种方法是将控制台设置为UTF-8模式(在Windows上,使用chcp 65001进行此操作),然后使用printf(u8"μουσάων Ἑλικωνιάδων ἀρχώμεθ᾽\n");打印UTF-8字符串printf(u8"μουσάων Ἑλικωνιάδων ἀρχώμεθ᾽\n"); 。 UTF-8是Windows上的二等公民,但通常是有效的。 尝试运行,而不先设置代码页,但是,你会得到垃圾。