【问题标题】:Write Unicode with write() function使用 write() 函数编写 Unicode
【发布时间】:2016-05-01 03:51:18
【问题描述】:

我正在做一个练习,我需要在终端上编写 Unicode, 在<unistd.h> 中仅使用 write()

我不能使用:

  • putchar
  • 设置语言环境
  • printf(其实这个练习就是复制printf函数)

关于如何执行此操作的任何“低级”建议?

【问题讨论】:

  • 使用 write 功能很难读取任何内容。就将 unicode 写入终端而言,您需要知道您的终端理解什么。如果它理解 UTF-8,那么你就可以这样写。
  • printf 是怎么做到的???
  • printf 只使用 putchar 并使用 write。它根据语言环境决定要写什么。如果您的语言环境与终端的理解相匹配,那么它就可以工作。如果没有,你通常会得到垃圾。

标签: c unicode unistd.h


【解决方案1】:

正如 Chris 在 cmets 中所写,您需要一个能够理解 Unicode 的终端(例如 Linux 上的 xterm),然后您只需编写它们即可。因此,默认情况下 xterm 理解 UTF8 并设置为代码页,这样该代码将为您提供 UTF8 笑脸 (☺)。

#include <stdio.h>
#include <unistd.h>

char happy[] = { 0xe2, 0x98, 0xba };  /* U+263A */

int main()
{
   write(1, happy, 3);
   return 0;
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2020-02-04
  • 1970-01-01
  • 2015-05-26
  • 2012-01-08
  • 2015-08-19
  • 2021-07-09
  • 2013-03-02
  • 2016-12-04
相关资源
最近更新 更多