c - 获取 Dev-C++ 构建的程序以将 UNICODE 字符输出到 Windows 命令行

标签 c unicode command-line dev-c++

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

这是独家新闻:我正在泰国给 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 头文件找到用于打印和操作宽字符串的其他函数。

引用: wprintf - C++ Reference

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

希望对你有帮助,

-戴夫

关于c - 获取 Dev-C++ 构建的程序以将 UNICODE 字符输出到 Windows 命令行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17584856/

相关文章:

c - 是否可以调用 C 函数,将其名称作为字符串?

C:通过 TCP 套接字发送嵌套结构

c - 在 C 中打印 Unicode 字符(存储在变量中)

windows - ffmpeg - 从视频中创建 x 个拇指 (Windows)

linux - 接受搜索字符串的脚本,搜索包含该字符串的文件夹并将它们移动到与该字符串同名的文件夹中

c++ - OpenGL 中的矩阵乘法顺序

c - 使用变量 C 编程时第二个 printf 不起作用

c - 为什么 Unicode 字符在 GCC 终端中显示不正确?

JavaCC 和 Unicode 问题。为什么\u696d属于 "\u4e00"-"\u9fff"范围,但在JavaCC中无法管理

linux - 有没有办法让[UP| key 显示 Linux 中最近的命令?