Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获得Dev-C++;用于将UNICODE字符输出到Windows命令行的内置程序_C_Unicode_Command Line_Dev C++ - Fatal编程技术网

获得Dev-C++;用于将UNICODE字符输出到Windows命令行的内置程序

获得Dev-C++;用于将UNICODE字符输出到Windows命令行的内置程序,c,unicode,command-line,dev-c++,C,Unicode,Command Line,Dev C++,如果你能回答我的任何问题,那就太棒了 独家报道:我正在给11年级的学生讲授泰国编程课程的介绍。到目前为止,他们的英语水平很高,我可以用英语授课,让他们用英语写程序,一切都很好 然而,作为使用非拉丁字符语言的人,我觉得他们至少应该学习什么是UNICODE。我不会在上面对它们进行测试,也不会让它们陷入实现细节的泥潭,但我想向它们展示一个UNICODE程序的示例,该程序可以使用泰语字符进行I/O操作 我在以下约束条件下工作,任何约束条件都不能改变(至少在本学期): 该程序必须在Windows 7上运

如果你能回答我的任何问题,那就太棒了

独家报道:我正在给11年级的学生讲授泰国编程课程的介绍。到目前为止,他们的英语水平很高,我可以用英语授课,让他们用英语写程序,一切都很好

然而,作为使用非拉丁字符语言的人,我觉得他们至少应该学习什么是UNICODE。我不会在上面对它们进行测试,也不会让它们陷入实现细节的泥潭,但我想向它们展示一个UNICODE程序的示例,该程序可以使用泰语字符进行I/O操作

我在以下约束条件下工作,任何约束条件都不能改变(至少在本学期):

  • 该程序必须在Windows 7上运行
  • 程序必须是C语言(不是C++)
  • 我们必须使用Dev-C++(v.4.9.9.3)作为我们的IDE(我将尝试说服管理员在下学期进行更改,但他们可能不想这样做)
  • 程序应该输出到命令行(我希望它“看起来”像我们迄今为止编写的程序)
  • 我希望它易于设置和运行,尽管我不反对包含一个批处理文件来为孩子们做一些设置工作
以下是我取得的成绩和我的问题:

  • 在控制面板>区域>管理>中,非UNICODE程序的语言设置为泰语
  • 我使用“chcp874”在命令行中设置,但是来自键盘的字符显示为垃圾字符。这可能是因为键盘映射错误,还是我必须更改其他内容
  • 我编写了一个程序,行为:printf(“\u0E01\n”);哪张照片ก, 泰语字母表中的第一个字母。这是正确的语法吗
  • 我收到一个编译器警告:“通用字符只支持C++和C99”。DEV-C++不编译到C99吗?有什么办法可以让我得到C99编译器吗
  • 我运行了代码,得到了垃圾字符。我想这可能是因为编译器、命令行或其他任何东西

我想以一个输出数据的程序结束本课程สวัสดีโลก, “Hello World!”的泰语意思是“Hello World!”,我在谷歌上搜索了很多次,但我找到的每个答案要么在这个特定的情况下不起作用,要么涉及不同的IDE。

我从未使用过DEV-C++IDE:-)然而,在阅读了一点之后,我发现了这一点 dev-c++版本4.9.9.3使用gcc-3.5.4 mingw端口。其通用字符支持状态为“完成”,详情请参阅。您必须更改IDE配置,以便编译器使用-std=c99作为编译器标志的一部分

希望这能奏效


我将尝试在我自己的系统上处理它,看看我们能走多远。如果我找到更多线索,将更新答案:-)

好的,这是我的一点帮助。我不使用Dev-C++作为我的IDE,因此我无法帮助您完成特定于IDE的事情,但以下是大多数C/C++编译器的标准:

wprintf
是宽字符(unicode)的
printf
实现

使用宽字符时,您将使用
wchar\u t
代替
char
来定义字符串

所以你可以这样做

#include <wchar.h>

int main(int argc, char** argv) {
    wchar_t* str = L"สวัสดีโลก";
    wprintf(L"%s", str);
    system("pause");
    return 0;
}
#包括
int main(int argc,字符**argv){
wchar_t*str=L“สวัสดีโลก";
wprintf(L“%s”,str);
系统(“暂停”);
返回0;
}
wprintf
很可能就是您要找的

通过研究
wchar.h
头文件,可以找到打印和操作宽字符串的其他函数

参考:

在引号前使用L表示您打算定义一个宽字符串。(unicode)

希望有帮助


-Dave

如果需要更改console C程序中的代码页,可以在程序开头添加标题
和行
系统(“CHCP 874”);

如果您需要windows下符合C99的免费编译器,您可以尝试Pelles C

它完全符合C99

必须使用具有以下语法的宽字符串常量:

L"Wide string\n"
您需要使用wprintf()等,而不是printf()


我设置了该标志,并采纳了Dave关于宽字符的建议。它仍然不能正确地呈现到cmd,但我将输出传输到一个文本文件并在那里正确呈现,因此现在输出肯定是正确的。谢谢!我改为宽字符并采纳了Ahmed关于宽字符的建议。它仍然不能正确呈现到cmd,但是我将输出传输到一个文本文件,并在那里正确呈现,因此现在输出肯定是正确的。谢谢!您可能希望将命令提示符的字体更改为支持unicode字符的字体,因为我认为终端字体不支持unicode字符。非常欢迎您,我希望您的类对您有好处。