微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

希腊字母在Windows Concole

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

printf(charset:IS0-1089:uffe);

但他们不确定。

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

确定IP是否被阻止

是什么让我的计时器跑不准?

在我的glibc版本中,ld-linux的segfault

将SurfaceImageSource转换为PNG

如何在Linux上正确设置串行通信

如何从java服务器发送一个string到C ++客户端?

如何摆脱Visual Studio(strcpy,sprintf,strdup)中的“不安全”警告/错误

控制台窗口有图标,但是OpenGL / gluT窗口没有。 为什么?

Visual Studio c#远程debuggingclosureswindows服务

什么是Linux相当于LPTSTR和LPCSTR?

假设Windows,您可以:

将您的控制台字体设置为Unicode TrueType字体:

使用“ANSI”机制发射数据

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

#include "windows.h" int main() { SetConsoleOutputCP(1253); //"ANSI" Greek printf("xE3xE5xE9xDC xF3xEFxF5"); return 0; }

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

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

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

printf("u0220n");

这将打印Ƞ

我认为这可能只适用于你的控制台支持希腊语。 可能你想要做的是将字符映射到希腊语,但使用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上的二等公民,但通常是有效的。 尝试运行,而不先设置代码页,但是,你会得到垃圾

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐