如果你能回答我的任何问题,那就太棒了。
这是独家新闻:我正在泰国给 11 年级的学生讲授编程入门类(class)。到目前为止进展顺利,他们的英语水平足够高,我可以用英语授课,让他们用英语编写程序,一切都很好。
但是,作为非拉丁字符语言的使用者,我觉得他们至少应该了解一下 UNICODE 是什么。我不会在上面测试他们或让他们陷入实现细节,但我想向他们展示一个 UNICODE 程序示例,该程序可以使用泰语字符执行 I/O。
我在以下限制条件下操作,这些限制都不能更改(至少在本学期):
- 程序必须在 Windows 7 上运行
- 程序必须是 C 语言(不是 C++)
- 我们必须使用 Dev-C++ (v. 4.9.9.3) 作为我们的 IDE(我将尝试说服管理员在下学期进行更改,但他们可能不想这样做)
- 程序应该输出到命令行(我希望它“看起来像”我们目前编写的程序)
- 我希望它易于设置和运行,但我不反对包含一个批处理文件来为 children 做一些设置工作。
这是我的进展以及我的问题:
- 在“控制面板”>“区域”>“管理”>“非 UNICODE 程序的语言”中设置为泰语。
- 我使用“chcp 874”来设置 Thai codepage在命令行中,但键盘字符显示为垃圾字符。这可能是因为键盘映射错误,还是我必须更改其他内容?
- 我用一行写了一个程序:printf("\u0E01\n");它打印 ก,泰语字母表中的第一个字母。这是正确的语法吗?
- 我收到编译器警告“通用字符仅在 C++ 和 C99 中受支持。” Dev-C++ 不能编译成 C99 吗?有什么方法可以为它获取 C99 编译器吗?
- 我运行了代码并得到了乱码。我想这可能是因为编译器、命令行或任何其他因素。
我很想用一个输出 สวัสดีโลก 的程序来结束本类(class),泰语相当于“Hello World!”我进行了大量的谷歌搜索,但我发现的每一个答案要么不适用于这种特定情况,要么涉及不同的 IDE。
最佳答案
好的,这是我的一点帮助。我不使用 Dev-C++ 作为我的 IDE,所以我无法帮助您解决 IDE 的具体问题,但以下是大多数 C/C++ 编译器的标准:
wprintf
是宽字符 (unicode) 的 printf
实现。
当使用宽字符时,您将使用 wchar_t
代替 char
来定义字符串。
所以你可能会做这样的事情
#include <wchar.h>
int main(int argc, char** argv) {
wchar_t* str = L"สวัสดีโลก";
wprintf(L"%s", str);
system("pause");
return 0;
}
wprintf
很可能是您要查找的内容。
可以通过研究 wchar.h
头文件找到用于打印和操作宽字符串的其他函数。
在引号前使用 L 表示您打算定义一个宽字符串。 (统一码)
希望对你有帮助,
-戴夫
关于c - 获取 Dev-C++ 构建的程序以将 UNICODE 字符输出到 Windows 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584856/